数组跟vector的区别在于:数组是静态分配空间,一旦分配了空间的大小,就不可以再改变了,例如,int a[6];而vector是动态分配内存,随着元素的不断插入,它会按照自身的一套机制不断扩充自身的容量,
vector容器的容量增长是按照容器现在容量的一倍进行增长。 先复制2倍的vector空间,再删除原来1倍的vector空间。空间复杂度增大。
front函数:
函数原型:
reference front();
const_reference front();
功能:
返回当前vector容器中 起始元素的引用。
back函数:
函数原型:
reference back();
const_reference back();
功能:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<char> v1;
vector<char>::iterator iter1;
vector<char>::iterator iter2;
v1.push_back('m');
v1.push_back('n');
v1.push_back('o');
v1.push_back('p');
cout << "v1.front() = " << v1.front() << endl;
cout << "v1.back() = " << v1.back() << endl;
iter1 = v1.begin();
cout << "* ( v1.begin() )= " << *iter1 << endl;
iter2 = v1.end()-1; //注意v1.end()指向的是 最后一个元素的下一个位置,所以访问最后一个元素的正确操作为:v1.end() - 1;
cout << "* ( v1.end()-1 )= " << *iter2 << endl;
return 0;
}
输出结果:
v1.front() = m
v1.back() = p
* ( v1.begin() ) =m
..........向量排序.........................................
vector<int>& v1;
sort(v1.begin(), v1.end());
..........一维向量迭代........................................
for (auto it = something.begin(); it != something.end(); it++) {
// todo
}
..........二维向量迭代........................................
Solution* so=new Solution();
vector<vector<int>> resVV=so->fourSum(vA,target);
if(resVV.size() != 0) {
cout<<"找到了 fourSum(vA,target)=" <<endl;
for(vector<vector<int>>::iterator iter=resVV.begin(); iter!=resVV.end(); ++iter) {
for(vector<int>::iterator iter2=iter->begin(); iter2!=iter->end() ; ++iter2)
cout<<*iter2<<",";
cout<<endl;
}
} else {
cout<<"未找到" <<endl;
}
front函数:
函数原型:
reference front();
const_reference front();
功能:
返回当前vector容器中 起始元素的引用。
back函数:
函数原型:
reference back();
const_reference back();
功能:
返回当前vector容器中末尾元素的引用。
begin函数:
函数原型:
iterator begin();
const_iterator begin();
功能:
返回一个当前vector容器中起始元素的迭代器。
end函数:
函数原型:
iterator end();
const_iterator end();
功能:
返回一个当前vector容器中末尾元素的迭代器。
因为STL中的begin和end定义的是一个半开放区间“[begin, end)”,end是最后一个元素的后一个位置。这样做有两个好处:1,判断是否到尾部简单只要!=end就行了,<运算在STL中是要避免的,因为计算量可能会比较大。2,判断空区间很简单begin()==end()要取最后一个元素的话用last()方法。
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<char> v1;
vector<char>::iterator iter1;
vector<char>::iterator iter2;
v1.push_back('m');
v1.push_back('n');
v1.push_back('o');
v1.push_back('p');
cout << "v1.front() = " << v1.front() << endl;
cout << "v1.back() = " << v1.back() << endl;
iter1 = v1.begin();
cout << "* ( v1.begin() )= " << *iter1 << endl;
iter2 = v1.end()-1; //注意v1.end()指向的是 最后一个元素的下一个位置,所以访问最后一个元素的正确操作为:v1.end() - 1;
cout << "* ( v1.end()-1 )= " << *iter2 << endl;
return 0;
}
输出结果:
v1.front() = m
v1.back() = p
* ( v1.begin() ) =m
* ( v1.end()-1 )=p