赞
踩
1.运算符
- v1==v2;//判断v1和v2是否相等
- v1!=v2;//判断v1和v2是否相等
- >、>=、<、<= //以字典顺序进行比较
2.取值
- v.empty();//判断是否为空,返回布尔值
- v.size();//返回容器中的元素个数
- v.max_size();//返回容器的容量
- v.front();//得到头元素
- v.back();//得到尾元素
- v.at(int i);//得到下标i处的元素,若下标越界,会抛出异常
- v1.swap(v2);//将v1和v2进行交换。容器的成员函数版本
- swap(v1,v2);//同上。系统函数版本
-
- assign(iter1,iter2);//将容器元素更换为一个迭代器的区间元素
- assign(n,t);//将容器元素变为n个t元素
- v.insert(iter,t);//在迭代器iter处插入t。返回所插位置处的迭代器
- v.insert(v.end(),10,t);//在容器v的末尾插入10个元素,每个元素都是t。返回新添加元素的第一个元素的迭代器
- v.insert(v.end(),{"a","b"...});//将后面花括号的每个元素插入容器v的尾部。返回新添加元素的第一个元素的迭代器
- v.insert(v.begin(),v2.end()-2,v2.end());//将容器v2的最后两个元素插入容器v的头部。返回新添加元素的第一个元素的迭代器
- 注意:上面这个用法,后面两个参数不能为自身容器的范围(v.insert(v.begin(),v.end()-2,v.end());是错误的)
-
-
- //利用insert的返回值,下面代码为一直在lst容器的头部插入元素(类似于push_front的功能)
- vector<string> v;
- auto iter=lst.begin();
- while(cin>> word)
- iter=v.insert(iter,word);//insert函数每回执行完,返回容器的首元素位置
- //vector不支持pop_front
-
- v.push_back(t);//尾部追加元素t
- v.pop_back();//删除尾元素
-
- v.earse(iter);//删除迭代器iter所指位置处的元素。返回删除位置处后一个元素迭代器
- v.erase(iter1,iter2);//删除迭代器iter1与iter2区间内的元素。返回删除最后一个元素的后一个元素迭代器
-
- v.clear();//清空容器,重新初始化容器
- v.resize(n);//将容器v的元素变为n个。若n<原始元素个数,删除多于元素。若n>原始元素个数,则用默认初始值初始化容器
- v.resize(n,t);//将容器元素变为n个t。与容器原始个数无关
-
- vector<int> v(5,666);
- v.resize(3);//v内有3个元素,都是666
- v.resize(8);;//v内有8个元素,前5个个是666,后3个都是0(默认)
- v.resize(10,666);//v内有10个元素,都是666
- //vector不支持emplace_front();
- //下面的两个函数,是在内存中创建一个对象,然后添加进相应的位置
- v.empalce(iter,args);//在容器v的位置添加创建一个args对象
- v.emplace_back(args);//在容器v的尾部添加创建一个args对象
-
- 例如
- class A{
- string name;int age;
- public:
- A(string name, int age);
- };
- int main()
- {
- vector<A> v;
- v.emplace_back("C语言", 18);//在尾部创建一个元素
- v.emplace(v.begin(),"C++",18);//在容器v的头部添加一个元素
- }
- v.capacity();//返回当前容器的容量(总共能存多少个)
- v.reserve(n);//为容器v重新分配n个内存空间(如果n<=当前容器大小,则什么都不做)
1.概念:向容器中添加或者删除元素可能会使容器的迭代器、引用、指针失效。失效的迭代器、引用、指针不再表示任何元素,使用起来非常危险
2.添加元素
3.删除元素
1.概念
2.方法:vector增长是有规律的,可以通过一个公式描述
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。