Vector类
一.vector的构造1.无参构造vector()2.含参构造vectorsize_type n, const value_type val value_type()n表示的是vector中元素的个数val指的是元素的值是多少。std::vectorint second (4,100); //创建了一个名为second的std::vectorint整数向量 //它初始包含4个元素每个元素的值都是100。3.拷贝构造vector (const vector x)std::vectorint third (second);4.迭代器初始化构造vector (InputIterator first, InputIterator last);std::vectorint fourth (second.begin(),second.end());注意迭代器的second.begin()指向的是second的第一个元素而second.end()指向的是第四个元素后面的位置。迭代器实行的是左闭右开。因此刚好覆盖second对象的全部元素。5.用初始化链表构造std::vectorint fifth{1,2,3,4,5};二.vector空间增长问题功能stringvector说明获取大小size()size()元素个数获取容量capacity()capacity()当前最多能存多少元素判空empty()empty()是否为空改变大小resize(n)resize(n)改变元素个数改变容量reserve(n)reserve(n)预留空间清空clear()clear()删除所有元素交换swap()swap()交换两个对象vector的这些函数与string的用法类似。这里不过多讲解。三.vector 增删查改1.push_back尾插一个数据void push_back (const value_type val);val既可以传左值又可以传右值是因为const value_type是const T是一个万能引用。std::vectorint v1{1,2,3,4,5}; v1.push_back(6);//v1中存放1234562.pop_back尾删操作移除向量中的最后一个元素实际上将size()大小减小一。3.findvector没有自己的find接口函数。这个find是std中的find。std::find 函数的返回值是一个迭代器它指向在搜索范围 [first, last) 中第一个值等于 val 的元素。如果找不到它就返回 last。int myints[] { 10, 20, 30, 40 }; std::vectorint myvector(myints, myints 4);//迭代器区间构造 std::vectorint::iterator it; it find(myvector.begin(), myvector.end(), 30); if (it ! myvector.end()) std::cout Element found in myvector: *it \n;//Element found in myvector:30 else std::cout Element not found in myvector\n;4.insertsingle element (1)iterator insert (iterator position, const value_type val);指定位置处迭代器类型插入值valfill (2)void insert (iterator position, size_type n, const value_type val);在指定位置处迭代器类型插入n个valrange (3)template class InputIterator void insert (iterator position, InputIterator first, InputIterator last);注意均是迭代器类型可以想成c语言中的指针int myints[] { 10, 20, 30, 40 }; std::vectorint myvector(myints, myints 4);//迭代器区间构造 std::vectorint::iterator its myvector.begin()1; myvector.insert(its, 15);//1015203040 for (auto its : myvector) { std::cout its ; }myvector.insert(its,2,15); for (auto its : myvector) { std::cout its ;//101515203040 }int arr_2[] { 11,12,13,14,15,16 }; myvector.insert(its, arr_2, arr_26); for (auto its : myvector) { std::cout its ;//10111213141516203040 }5.eraseiterator erase (iterator position);//指定位置的删除iterator erase (iterator first, iterator last);//删除一段区域std::vectorint::iterator pos myvector.begin();//删除10 myvector.erase(pos); for (auto its : myvector) { std::cout its ; }myvector.erase(pos,pos3);//删除102030 for (auto its2 : myvector) { std::cout its2 ; } return 0;6.swapvoid swap (vector x);用于交换两个数组的元素。std::vectorint foo (3,100); // three ints with a value of 100 std::vectorint bar (5,200); // five ints with a value of 200 foo.swap(bar); std::cout foo contains:; for (unsigned i0; ifoo.size(); i) std::cout foo[i];//200200200200200 std::cout \n; std::cout bar contains:; for (unsigned i0; ibar.size(); i) std::cout bar[i];//100100100 std::cout \n;7.operator[]运算符[]重载。可以通过数组下标访问元素。在swap代码中打印部分已经使用。