vector<int> v1 {1,2,3};
vector<int> v2(v1); //v2 copy v1
vector<int> v3(10,2); //10个元素均为2
vector<int> v4(10); //10个元素均默认初始化为0
vector<string> svec(10); //10个元素,默认初始化为空string对象
vector<int> v5={2,3,4};
vector<string> v6={"Come","ON"};
vector<int> vec; //默认初始化,vec中不含任何元素
for(int i=0;i!=10;i++)
vec.push_back(i);//依次把整数值放到vec的尾端
for(auto i:vec) //对于v中的每个元素
cout<<i<<" ";
vector支持的其他操作:
v.empty();
v.size();
注意:不能用下标形式添加元素。vector对象(string对象)的下标运算符可用于访问已经存在的元素,而不能用于添加元素。
所有的标准容器都可以用迭代器。但是其中只有少数几种才同时支持下标运算符。类似于指针类型,迭代器也提供了对对象的简介访问。就迭代器而言,其对象是容器中的元素或者string对象中的字符。使用迭代器可以访问某个元素,迭代器也能从一个元素移动到另外一个元素。
有迭代器同时拥有返回迭代器的成员。比如,这些类型拥有名为begin和end的成员,begin成员负责返回指向第一个元素的迭代器。如果容器为空,begin和end返回的是同一个迭代器,都是尾迭代器。
迭代器运算符:
使用“==”和“!=”来比较两个合法的迭代器是否相等。使用“++”递增运算符来从一个元素移动到下一个元素。
string s("some string");
if(s.begin()!=s.end())
{
auto it=s.begin();
*it=toupper(*it);
}
for(auto it=s.begin();it!=s.end()&&!isspace(*it);it++)
*it=toupper(*it);
迭代器类型:
拥有迭代器的标准库类型使用iterator和const_iterator来表示迭代器的类型:
vector<int>::iterator it; //it能读写vector<int>的元素
string::iterator it2; // it2能读写string对象中的字符
vector<int>::const_iterator it3;
string::const_iterator it4;
const_iterator和常量指针差不多,能读取但是不能修改它所指向的元素值。如果对象只需要读操作而无须写操作的话最好使用常量类型,为了便于得到const_iterator类型的返回值,C++11新标准引入两个新函数,分别为cbegin和cend。
auto it3=v.cbegin(); //it3的类型是vector<int>::const_iterator