C++ learing process STL

本文介绍了C++中的STL(标准模板库),它包括容器、迭代器、算法和函数对象。通过示例展示了如何使用vector容器,并用迭代器进行元素遍历和排序。迭代器作为STL的重要组成部分,提供了类似指针的功能,但更适用于对象容器的遍历。此外,还讨论了begin和end操作在迭代器中的作用。
摘要由CSDN通过智能技术生成

STL
标准模板库;
将算法从特定的数据结构中抽象出来;
C++的模板为泛型程序设计奠定了关键的基础;
STL是泛型程序设计的一个范例,由一些可适应不同需求的集合类以及在这些数据集合上操作的算法构成:
容器:管理某类对象的集合;
迭代器:对对象集合上进行遍历;
算法:处理集合内的元素
函数对象;

向量(Vector)使用

#include
#include
using namespace std;
vector num;//STL中的vector容器
int element;
//从标准输入设备读入整数,
//直到输入的是非整型数据为止
while(cin>>element)
num.push_back(element);
//STL中的排序算法
sort(num.begin(),num.end());

#include
using namespace std;

#include

void print_vector(const vector& coll)
{
cout << "coll.capacity() "<<coll.capacity() << endl;//容量
cout << "coll.size() " <<coll.size() << endl;
}
int main()
{
vector coll;//动态数组
print_vector(coll);
for(int i = 0; i< 10; i++)
{
coll.push_back(i);//添加元素
}
cout << coll[9] << endl;
print_vector(coll);
return 0;
}

迭代器是面向对象版本的指针
1、指针可以志向内存中的一个地址;
2、迭代器可以指向容器中的一个位置,用来遍历STL容器中的全部或者部分元素。

STL的每一个容器类模板中,都定义了一组对应的迭代器类
在这里插入图片描述

获得迭代器:
所有容器都提供获得迭代器的函数
在这里插入图片描述

所有容器都提供两种迭代器:
1、Container::iterator以“读写”模式遍历元素;
2、Container::const_iterator以“只读”模式遍历元素;

Vector的迭代器 vector::iterator iter;
这条语句定义了一个名为iter的遍历,它的数据类型是由vector定义的iterator类型。

Vector的begin和end操作
如果容器中有元素的话,由begin返回的迭代器指向第一个元素:
vector::iterator iter = ivec.begin();
由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器。

#include
using namespace std;

#include

void show_array(const vector& array)
{
vector::const_iterator iter;
cout << “array[”;
for(iter = array.begin(); iter != array.end(); ++iter)
{
cout << *iter << “,”;
}
cout << “]” << endl;
}

int main()
{
vector array;

vector<int>::iterator iter; //迭代器,vector内部类
vector<int>::const_iterator citer;

array.push_back(42);
array.push_back(1);
array.push_back(100);

array.pop_back();

iter = array.begin();
cout<< *iter <<endl;

*iter = 109;

citer = array.begin();
cout << *citer << endl;

show_array(array);


return 0;

}

vector迭代器的自增和解引用运算
for(vector::iterator iter = ivec.begin();iter!=iver.end(); ++iter)
*iter = 0; //将iterator指向的元素设为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值