vector操作小结

来源:互联网 发布:最小公倍数的算法 编辑:程序博客网 时间:2024/06/13 18:57

      前面了解了一下vector,现在我们来看看vector的相关操作。

int main(){vector<int> v;//声明并指出向量,空的vector,但可以向里面增加元素vector<int> v3(3,8);vector<int> v4{ 1, 2, 3, 4 };vector<int> v5 = {4,5,6};vector<int> v6(3);//只提供数量而略去初始值,int->0,string->空串vector<int>::iterator it;//push_back向vector对象中添加元素for (int i = 0; i != 10; i++)v.push_back(i);for (unsigned i = 0; i < v4.size(); i++)//v.size()返回值为无符号 cout << v4[i];//容器支持下标操作,打印1234cout << endl;//v.empty(),v.size(),v[n](返回引用),//vector支持>,<等比较if (v4 > v5)cout << "yes" << endl;elsecout << "no" << endl;//打印no。和比较字符串一样,一个一个元素比较,而不是比较sizeif (!v4.empty())      cout << v4[0] << ','<<v4.size() << endl;//打印1,4//不能用下标的形式添加元素,因为空的那部分根本不存在下标//assign(仅顺序容器):用参数所指定的元素(拷贝)替换左边容器中的所有元素,允许我们从一个不同但相容的类型赋值v.assign(v3.begin(),v3.end());cout << v[0];//打印8v.assign(4,5);//将4个5拷贝到v中for (unsigned i = 0; i < v.size(); i++)//v.size()返回值为无符号 cout << v[i];//5555cout << endl;    //swap交换 swap(v3,v4);//push_frnot从头部插入一个元素,vector不支持 //insert向容器特定的位置插入0个或多个元素it=v4.insert(v4.begin(),0);//插入一个,其返回值为迭代器,恰好指向新的元素cout << *it << endl;//打印0v4.insert(v4.begin(),4,0);//插入多个//emplace_front,emplace,emplace_back表示头部插入,插入,尾部插入。表示构造v4.emplace_back(5);cout << v4[4];//打印5//front()和back()成员函数,它们的返回值都是引用cout << v4.front() << endl;//0cout << v4.back() << endl;//5//pop_front和pop_back删除第一个和最后一个元素//vector没有pop_front成员v4.pop_back();//从尾部删除一个元素//erase(p)删除迭代器p指向的元素,返回一个指向被删除元素后的迭代器it=v4.erase(v4.begin());cout << *it << endl;//打印2v4.erase(v4.begin(),v4.end());//删除范围内元素        return 0;}
上面都是单独测试,每个测试互不干扰,每次vector的值都是初始值。


下面是整体测试,前面测试修改的vector,后面保留其值,并测试。

int main(){vector<int> v4{ 1, 2, 3, 4 };vector<int> v5 = {4,5,6};vector<int>::iterator it;//resize改变容器大小,用来增大或缩小容器。不够按类型补齐,多了则会被删除v4.resize(10);//将v4的大小改变为10,多的用0补齐v5.resize(2);//将v5的大小改变为2,多余的删除,则v5为{4,5}//capacity是容器容量,size是容器中元素的数量cout << v4.capacity() << endl;//10cout << v4.size() << endl;//10,resize讲扩大的部分初始化了//v.reserve(n)表示至少分配能容纳n个元素的内存空间,多的内存不初始化     v4.reserve(100);cout << v4.capacity() << endl;//100cout << v4.size() << endl;//10v5.reserve(20);cout << v5.capacity() << endl;//20v5.shrink_to_fit();//归还多余内存cout << v5.capacity() << endl;//2return 0;}

参考资料:

C++ Primer

0 0