1.与list相比就是可以有下标访问。.at(index)与[index]访问基本一样,只是.at(index)是有边界检查的。
2.remove ()并不删除元素,因为容器的size()没有变化
3.如果需要高效的存取操作,选择vector,如果有大量的插入删除操作,选择 list。
void vector_test(void)
{
std::cout << "vector(void)";
cout<<"******//1.创建与添加 push_back(0-5)******"<<endl;
vector<int> vi;
for (int i = 0; i < 5; i++)
{
vi.push_back(i);
cout << vi[i] << ",";
}
cout << "******//2.插入insert(vi.begin()+vi.size(),6)******" << endl;
vi.insert(vi.begin()+vi.size(),6);
cout << endl;
cout << "******//3.删除 pop_back()******" << endl;
for (int i = 0; i < vi.size(); i++)
{
vi.pop_back();//3.删除
}
cout << "******删除 后 ******" << endl;
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
for (it = vi.begin(); it != vi.end(); it++)
{
cout << *it << " ";
}
cout << endl;
cout << "******//4 批量添加 string 5个******" << endl;
vector<string> vstr(5, "ab");// 创建5个string "00"
vstr.push_back("111");
vstr.push_back("222");
for (int i = 0; i < vstr.size(); i++)
{
cout << vstr[i] << ",";
}
// cout << "******erase(vstr[5]),删'111' "<<endl;
vstr.erase(vstr.begin() + 5);
cout << "******erase(vstr.begin()+5),删一个 " <<"vstr大小="<< vstr.size() <<endl;
for (int i = 0; i < vstr.size(); i++)
{
cout << vstr[i] << ",";
}
remove("222");
cout << "******remove('222'); " << "vstr大小=" << vstr.size() << endl;
for (int i = 0; i < vstr.size(); i++)
{
cout << vstr[i] << ",";
}
cout << "******//5.索引vstr.at(0)=******" << vstr.at(0) << endl;
cout << "******//索引vstr[0]=******" << vstr[0] << endl;
vstr.clear();
cout << "******//6.清空 clear()清空元素,但不回收空间******" <<"vstr.size()=" <<vstr.size()<<endl;
for (int i = 0; i < vstr.size(); i++)
{
cout << vstr[i] << endl;
}
}