-
头文件
#include <vector> #include <algorithm> #include <iterator>
-
创建和初始化
参考文章:https://blog.csdn.net/sss_369/article/details/88360769
- vector list1; //默认初始化,最常用
- vector list2(list);
vector ilist2 = ilist; //拷贝初始化 - vector list = {1,2,3.0,4,5,6,7};
vector list {1,2,3.0,4,5,6,7};//列表中元素的拷贝,VS2012 不支持 - vector list3(list.begin()+2, list.end()-1); //比较常用
- vector ilist4(7);//包含 7 个元素,每个元素进行缺省的值初始化,对于 int,也就是被赋值为 0
- vector ilist5(7,3);//指定值初始化,ilist5 被初始化为包含 7 个值为 3 的 int
- int a[] = {1, 2, 3, 4, 5};
vector t(a, a + sizeof(a) / sizeof(a[0]));//支持 VS2012
- 成员函数
- push_back( ) 成员函数在向量的末尾插入值,如果有必要会扩展向量的大小。
- size( ) 函数显示向量的大小。
- begin( ) 函数返回一个指向向量开头的迭代器。
- end( ) 函数返回一个指向向量末尾的迭代器
- empty( ) 判断是否为空
- a.swap(b) a、b 向量交换
-
排序
排序函数返回值为 false,元素交换;参数必须加 const 修饰,否则报错bool SortDimensions(const DimensionStruct &td1, const DimensionStruct &td2);
void ShowDim(DimensionStruct dim); sort(dimlist.begin(), dimlist.end(), SortDimensions);
默认排序算法
sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列 reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1
-
遍历
for_each(dimlist.begin(), dimlist.end(), ShowDim);
等价于
vector<DimensionStruct>::iterator pr; for (pr = dimlist.begin(); pr != dimlist.end(); ++pr) ShowDim(*pr);
可以利用 copy 遍历输出 vector
copy(t.begin(), t.end(), ostream_iterator<int>(cout, " "));
-
交换两个元素
iter_swap(t.begin(), t.begin() + i); swap(t[i], t[j]);
-
复制
把 t 中的从 t.begin()+1(包括它)到 t.end()(不包括它)的元素复制到 k 中,从 k.begin()的位置(包括它)开始复制,覆盖掉原有元素。k 的容量不能为 0,k.size()>t.size()时,只复制 t 的一部分,多余部分丢掉。vector<int> k(t.size() - 1); copy(t.begin() + 1, t.end(), k.begin());
-
查找
find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置