Introduction
- vector 是标准库中的一个类型,代表的是一个容器、集合或者动态数组的一个概念。可以把若干个对象放到容器中,但这些对象的类型必须相同。简单的说,可以把一堆
int
型数字放到 vector 容器中,复杂点说,可以把一堆相同类型的类对象放到 vector 中去。 - 要使用这种类型需要包含 vector 头文件
#include<vector>
。当然为方便引用这种类型,也要书写:using namespace std;
举例说明:vector< int >myvec;
此为定义了一个 vector类型的对象,对象的名字为 myvec
,这个对象里保存的是int
型数据。(其实vector是一个类模板,这里的 <>
实际上是类模板的一个实例化过程)
一般来讲,vector容器中可以装很多种不同类型的数据作为其元素(容器中装的内容简称“元素”)
但vector中不能用来装引用
vector<int &>myvec; //语法错误
vector 初始化
- 增加数据 push_back()
vector<string>mystr;
mystr.push_back("victor");
push_back() 是往容器末尾增加数据(最后插入的元素在vector容器的最末尾)。 - vector对象复制
vector<string>mystr2(mystr);
vector<string>mystr2 = mystr; //把mystr元素复制给了mystr2 和mystr3
- 多种初始化
vector<string>mys1 = {"h","e","l","l","o"};
创建时可以指定数量
vector<string>mys2(7,"hello") // 创建了7个hello
“( )”一般表示对象中元素数量的概念,“{ }”一般表示对象中元素内容的概念。但当类型不一致时(往往是“{ }”内的数值表示元素的数量)
vector<int>myint(7) //单个数字7表示元素数量,每个元素值默认为0
vector<int>myint2{7} //单个数字7,表示一个元素
vector<string>mys{12} //12个元素,每个元素为"" ,因为12不能作为string对象的内容(类型不一致),所以被系统处理成元素的数量了,但不提倡此种写法
vector<int>myint3{"hello"} //直接报错
vector对象上的操作
- 判断是否为空 empty(),返回布尔值。
- 计算元素个数 size()。
- 将容器清空 clear()。
- myvec[n]:返回 myvec 中第n个字符,位置从0开始计算,n必须小于.size()。
- 赋值运算符 “ = ”
vec2 = vec //用vec中的内容取代了vec2中原有的内容
- 相等不相等 “ == ”和 “ != ”
两个vector对象相等:元素数量相等,且对应位置元素值也相等。否则就不相等。 - for 的应用
vector<int>myint{1,2,3,4};
for(auto& veci:myint) //引用达到了改变元素值得目的
veci *= 2; //元素值扩大一倍
在for语句中,不要改变vector的容量,增加,删除元素都不可以。
vector<int>myint{1,2,3,4};
for(auto veci:myint)
{
veci.push_back(7); //导致输出彻底混乱
cout<<veci<<endl;
}