CPP学习--字符串、向量和数组

 

向量-Vector

Vector有向量和容器的意思,个人感觉翻译成容器可能会更合适一点,但是教材c++primer上翻译的是容器,入乡随俗了。

创建一个Vector

使用vector需要包含命名域std和头文件二者缺一不可。

#include 
using namespace std;

创建vector的方式有很多,这里只给出最常用的几种

//下文的T指type,vector可以根据定义来存放不同类型的元素。
vector vec;            //创建一个空的vector。
vector vec2(vec1);     //相当于vector vec2 = vec1,单纯的复制而已
vector vec2 = vec1;    //同上
vector vec(n);          //初始容量为n的vector,元素为默认值,比如int为0
vector vec(n,val);        //初始容量为n,且n个元素均为val。
vector vec = {1,2,3,...}    //初始值为大括号内的元素

向Vector中添加元素

使用方法push_back(val)既可。

切记不能用下标形式添加元素,可以用下标形式来改变元素。

常用Vector操作

vec.empty();
vec.size();
vec.push_back();
vec[n]    //类似于数组,用下标取值,但是切记不能超过size
vec = {1,2,3,..};        //替换vec中的元素

迭代器

具有迭代器的容器都含有begin()和end()两个成员方法。

其中end()返回的是其末尾元素的下一位,也就是说end()迭代器并不指向一个实际的元素。

迭代器运算符

使用==和!=来判断两个迭代器是否相等,当迭代器指向的元素相等时,他们就想等。

可以通过判断一个容器的begin()和end()迭代器是否相等来判断这个容器是否为空。

void iterator_isEmpty() {
	//string 类型拥有迭代器
	//当有迭代器的类型的begin成员和end成员返回的迭代器一致时,说明这个容器为空
	string str;
	cin >> str;
	if (str.end() == str.begin())
		cout << "str为空" << endl;
}

迭代器的注意事项

改变Vector容量的操作都会使迭代器失效,操作时需要留心一下。

你可能感兴趣的:(CPP)