vector是序列式容器,可变长数组
std::vector</*当前容器类型可以是任何类型,不能是引用和const*/>
//std::vector<int> demo;
//std::vector<std::string> demo;
//std::vector<Demo> demo;
构造
std::vector<int> first; // 空
std::vector<int> second (4,100); // 4 个 100
std::vector<int> third (second.begin(),second.end()); // second 从 begin 到 end
std::vector<int> fourth (third); // 复制 third
vector<std::string> strings(10,"abc");//10个"abc"
strings.push_back("在vector尾部增加");
strings.pop_back();//弹出尾部元素
strings.back();//获取最后一个元素
strings.assign(10,"abc");//赋值,会替换整个容器,返回void,类对象的访问
strings = otherstrings;//整个容器替换
迭代器,指向的是容器当中位置
位置指针对象
vector<std::string> strings(10 , "66666");
vector<std::string>::iterator it = strings.begin();//取出迭代器
for(auto it=string.begin();it!=strings.end()/*end指向最后一个元素的下一个空间*/;++it)
{std::cout<<*it<<std::endl;//返回const}
std::cout<<it->c_str()<<std::endl;
//vector<std::string>::iterator可写为 auto it,自动推倒
//begin 和 end 是半开区间 [ ),end-1是有效值
//rbegin rend 颠倒的 vector<std::string>::reverse_iterator it=strings.rebgin();
strings.size();//
strings.resize();
strings.insert(strings.begin()+1,"2");//插入,传入iterator参数
strings.insert(strings.begin()+1,10,"2");//连续插入10个2
strings.insert(strings.begin(),otherings.begin()+1,otherings.begin()+3);//把otherstrings的begin+1到begin+3
strings.clear();//删除
strings.erase(strings.begin());//擦除,传入区间,返回新的迭代器
strings.erase(strings.begin(),strings.begin()+10);
auto tt=strings.begin();
tt=strings.erase(tt);//vector已经发生了改变,内部迭代器也会改变,要更新(tt)迭代器,插入时也会更新
swap 交换