c++复习总结一容器

1.容器的介绍

c++标准库里面定义了三种顺序容器,分别是vector,list和deque,要使用这些容器,必须要包含下列的头文件

#include<vector>

#include<list>

#include<deque>

所有的容器都是类模板,要定义某种特殊的容器,必须在容器名后面加上一对尖括号,尖括号里面包含的是提供容器存放元素的类型

vector<string> svec;

2.容器元素的初始化

除了默认的构造函数,容器提供了其他的构造函数使程序员来指定元素的初值,如下所示

C<T> c; 创建一个名为c的空容器;

C c(c2); 创建容器c2的副本,c和c2必须是相同的容器类型,并存放相同类型的元素;

C c(b,e); 创建c,其元素是迭代器b和e标识的范围内元素的副本,

C c(n,t); 用n个值为t的元素创建容器c,其中值t必须是容器类型C的元素类型的值,或者是可以转换为该类型的值;

vector<int> ivec2(ivec1);

vector<int> ivec4(10,-1);

3.vector对象的操作

vector标准库提供了很多类似于string对象的操作,如下所示

v.empty(); 若v为空,则返回true,否则返回false

v.size();    返回v中元素的个数

v.push_back(t); 在v的末尾增加值为t的元素

v[n]; 返回v中位置为n的元素

v1=v2;   将v1中的元素替换为v2中元素的副本

向vector中添加元素

push_back()操作接受一个值,并将它作为一个新的元素添加到vector对象的后面:

如下所示


#include<vector>
#include<iostream>
#include<string>

using namespace std;

int main()
{
 string word;
 vector<string> text;
 while (cin >> word)
 {
 text.push_back(word);
 }
}

vector的下标操作

vector的对象是没有命名的,可以按vector中对象的位置来访问它们,vector中元素位置从0开始,如下例将vector中元素置为0;

for(vector<int>:: size_type ix = 0;ix != ivec.size(); ++ix)

ivec[ix] = 0;

顺便说下,不能使用vector的下标操作来添加元素,下标只能获取已存在的元素;

4,迭代器

除了使用下标来访问vector对象的元素外,标准库还提供了另外一种访问的方法,就是迭代器,迭代器是一种检查容器元素并遍历元素的数据类型。

每种容器东定义了自己的迭代器类型如:

vector<int>::iterator iter;

每种容器都定义了begin和end操作函数,用来返回迭代器,如果容器中有元素,则begin操作返回第一个元素

vector<int>::iterator iter = ivec.begin();

end操作返回迭代器指向容器的末端元素的下一个,通常称作超出末端迭代器,表明指向一个不存在的元素;

可以使用迭代器来重写我们上面重置容器元素为0的操作

vector<int> ivec(10,10);
 for(vector<int>::iterator iter = ivec.begin();iter!=ivec.end();++iter)
 *iter = 0;

发表评论

电子邮件地址不会被公开。 必填项已用*标注