初始化&赋值:
1>不带参数:
vector<int> mvector;
2>带参数的构造函数初始化:
vector<int> mvector(10);//十个默认值0的元素
vector<int> mvector(10,1);//是个默认值1的元素
3>通过数组地址初始化
int a[5]={1,2,3,4,5};
vector<int> b(a,a+5);//通过数组a的地址初始化,注意地址时从0到5,左闭右开区间
4>通过同类型的vector初始化
vector<int> a(10,1);
vector<int> b(a);
5>通过insert初始化
//insert初始化方式将同类型的迭代器对应的始末区间(左闭右开区间)内的值插入到vector中
vector<int> a(10,1);
vector<int> b;
//将a[0]~a[2]插入到b中,b.size()由0变为3
b.insert(b.begin(),a.begin(),a.begin()+3);
int a[5]={1,2,3,4,5};
vector<int> b;
b.insert(b.begin(),a,a+5)
//从b开始位置插入6个6
b.insert(b.begin(),6,6);
6>通过copy函数赋值
vector<int> a(5,1);
int tmp[5]={1,2,3,4,5};
vector<int> b(10,1);
copy(a.begin(),a.end(),b.begin());
copy(a1,a1+5,b.begin());
迭代器:
vector<int>::iterator it;
for(it=mvector.begin();it!=mvector.end())
cout<<*it<<endl;
mvector.push_back(1); 把1压入容器末尾
mvector.insert(mvector.begin()+i,a); 在第i个元素后插入元素a
mvector.erase(mvector.begin()+i); 删除第i+1个元素
mvector.erase(mvector.begin()+i,mvector.begin()+j); 删除下标在[i,j-1]内的元素
mvector.size() 返回大小
mvector.clear() 清空容器
mvector.reverse(mvector.begin(),mvector.end()); 元素反转,逆序排列
sort(mvector.begin(),mvector.end()); 升序排列
自定义排序方式:
bool Comp(const int &a,const int &b){
return a>b;
}
sort(mvector.begin(),mvector.end(),Comp);
List与Vector的区别
vector 与数组类似,它有一段连续的内存空间,并且起始地址不变,,因此它能非常好的支持随机存储,即使用下标操作符访问其中的元素,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝(复杂度是O(n)),另外当该数组后的内存空间不够时,需要重新申请一块最勾搭的内存并进行内存的拷贝。这些都大大影响了vector的效率。它的迭代器支持“+”“+=”“<“等操作符
List是由数据结构中的双向列表实现的,因此它的内存空间是不连续的。只能通过指针来进行数据的访问,这个特点使得它的随机存取变得非常没有效率,需要遍历中间的元素,搜索复杂度O(N)因此它没有提供[]操作符的重载,但却可以以很好的效率支持任意地方的插入和删除。它的迭代器不支持“+”“+=”“<“等操作符,只能使用++来移动迭代器