1.vector 的中文名为向量,可以理解为一个序列容器,里面存放的是相同的数据结构类型,类似于数组但与数组又有微妙的不同。
3.vector 同时也有许多的函数方法可以调用,方便我们的数据处理以及内存空间的管理。
4.vector 与其他的序列容器相比 (list, forward_lists, deque 等),vector 适合于随机的访问元素,在需要很多随机增删操作的情况下,或许 vector 就没有那么的好用了。
5.vector 在大多数的情况下还是作为动态来使用,一般用来求解线性的题目。
首先需要包含头文件 <vector>
实例化一个 vector:因为 vector 是一个模板类,在实例化的同时我们需要给出数据类型。如:
std::vector<int>v1;//实例化一个存放 int 型数据的 vector,其 size() 为 0,初始值为 0;
std::vector<int>v2(5,1);//实例化一个 size() 为 5 的 vector,且数据的初始值为 1;
std::vector<int>v3(v2);//实例化一个与 v2 相同的 vector,而且可以使用迭代器或数值来确定一个范围。
std::vector<int>v3 = v2;//同上
如果代码中包含了 using namespace std; 则可以不写 std:: 前缀。
emplace_back() 能够通过参数构造对象,不需要拷贝或者移动内存,相比于 push_back() 能更好地避免内存的拷贝与移动,使容器插入元素的性能得到进一步提升。由此,在大多数情况下应该优先使用 emplace_back() 来代替 push_back()。
翻转 vector:reverse(v1.begin(),v1.end());
对 vector 进行排序:sort(v1.begin(),v1.end());//从小到大
sort(v1.begin(),v1.end(),Comp);//从大到小
copy(v1.begin(),v1.end(),v2.begin()+1);//把从 v1[0] 到 v1[size()-1] 的数据复制到 v2[1] 中
find(v1.begin(),v1.end(),10);//在 v1[0] 到 v1[size()-1] 中寻找值为 10 的数
v1.assign(v2.begin(),v2.begin()+3);
v1.assign(5,3);
v1.front();
v1.back();
vector<int>::iterator=v1.begin();
vector<int>::iterator=v1.end();
v1.at(3);
v1.empty();
v1.clear();
v1.push_back(5);
v1.emplace_back(5);
v1.insert(v1.begin()+1,5);//在v1的第一个位置插入值为5的数据
v1.insert(v1.begin()+1,3,5);//在v1的第一个位置插入3个值为5的数据
v1.insert(v1.begin()+1,v2.begin(),v2.end());//在v1的第一个位置插入v2
v1.emplace(v1.begin(),5);//在v1的头部插入值为5的数据
v1.pop_back();
v1.erase(v1.begin()+3);
v1.erase(v1.begin()+1,v1.begin()+3);
v1.size(5);
v1.resize(10);
v1.resize(10,6);//假如v1原来为{1,2,3,4,5},执行代码后为{1,2,3,4,5,6,6,6,6,6}
v1.capacity();
v1.swap(v2);
v1==v2;
v1=v2;
v1>v2;
v1<v2;
v1[4];
sort(v1.begin(),v1.end());
reverse(v1.begin(),v1.end());
copy(v1.begin(),v1.end(),v2.begin()+1);
find(v1.begin(),v1.end(),10);
提醒一下:迭代器 v1.begin() 到 v1.end() 的范围是 v1[0] 到 v1[v1.size()-1]。例如假设:v1.size()=5,则 v1.begin() 到 v1.end() 的范围是 v1[0] 到 v1[4],它是一个左闭右开的区间。
因篇幅问题不能全部显示,请点此查看更多更全内容