vector的数据安排以及操作方式,与array非常相似。两者的唯一区别在于空间的运用的灵活性。array是静态空间,一旦配置了就不能改变。vector是动态空间,随着元素的加入,它的内部机制会自行扩充空间以容纳新元素。因此,vector的运用对于内存的合理利用与运用的灵活性有很大的帮助,我们再也不必因为害怕空间不足而一开始要求一个大块的array。

vector动态增加大小,并不是在原空间之后持续新空间(因为无法保证原空间之后尚有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来,然后才开始在原内容之后构造新元素,并释放原空间。因此,对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了。

 #include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std; int main()
{
string str[] = {"Alex", "John", "Robert"};
//创建一个空vector容器
vector<int> v1;
//创建一个有10个空元素的vector容器
vector<int> v2();
//创建一个有10个元素的vector容器,并为每个元素赋值为0
vector<int> v3(,);
//根据字符串数组创建vector容器
vector<string> v4(str,str + ); //迭代器法遍历
vector<string>::iterator sIt = v4.begin();
while(sIt != v4.end()){
cout<< *sIt ++ << " ";
}
cout<<endl; //拷贝构造
vector<string> v5(v4);
//下标法遍历
for(int i = ;i < ;i ++){
cout<< v5[i] << " ";
}
cout<<endl; return ;
}

vector创建二维数组:

 #include   <iostream>
#include <vector>
using namespace std;
int main()
{
vector < vector <int> > array();
for(int i=; i <; i++)
array[i].resize();//设置数组的大小3X3
//现在可以和使用数组一样使用这个vector
for(int i=; i <; i++)
for(int j=; j <; j++)
array[i][j]=(i*j);
//输出
for(int i=; i <; i++)
{
for(int j=; j <; j++)
cout << array[i][j] << " ";
cout << endl;
}
cout<<"After resizing:"<<endl;
// 添加两行,对列也要重新设置大小
array.resize();
array[].resize();
array[].resize();
//现在是5X3的数组了
for(int i=; i <; i++)
for(int j=; j <; j++)
array[i][j]=(i*j);
for(int i=; i <; i++)
{
for(int j=; j <; j++)
cout << array[i][j] << " ";
cout << endl;
}
return ;
}

二维数组去除重复行:

res.erase(unique(res.begin(), res.end()), res.end());

二维数组迭代输出:

 vector<vector<int>>::iterator IE;

 3 vector<int>::iterator it;
for(IE=array.begin();IE<array.end();IE++)
{
for (it=(*IE).begin();it<(*IE).end();it++)
{
cout<<*it<<" ";
}
cout<<endl;
}

最新文章

  1. jsdoc
  2. 快速上手php:使用PhpStrom调试php
  3. 『设计』Laura.Compute 设计思路
  4. 匈牙利命名法,骆驼命名法(camel),帕斯卡(Pascal)命名法(转)
  5. poj3263 Tallest Cow
  6. How do I place a group of functions or variables in a specific section?
  7. 如何在CentOS5中增加CentALT的源
  8. TCP/UDP差异
  9. Statistical Models and Social Science
  10. Java之面向对象例子(二)
  11. LeetCode 280. Wiggle Sort (摆动排序)$
  12. lua 二维数组创建
  13. 深入Java关键字instanceof
  14. 自定义Maven Archetype模板
  15. Leetcode 记录(201~300)
  16. Winform 中写代码布局中遇到的控件遮盖问题
  17. 图像处理及opencv汇总
  18. OpenStack实践系列⑤网络服务Neutron
  19. Mysql 一些基本的小东西
  20. The connection string &#39;MysqlEF&#39; in the application&#39;s configuration file does not contain the require异常

热门文章

  1. P2P通讯
  2. Java设计模式(19)——行为模式之责任链模式(chain of responsibilitiy)
  3. 北京Uber优步司机奖励政策(1月25日)
  4. 【NAS】NFS中的fsid如何理解
  5. 如果看懂git -help
  6. android 学习六 构建用户界面和使用控件
  7. informix如何查询第一条记录
  8. 245. Subtree【LintCode java】
  9. markdown语法介绍
  10. python计算工资个税