博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++ 中vector的基本用法
阅读量:5274 次
发布时间:2019-06-14

本文共 3631 字,大约阅读时间需要 12 分钟。

//在网上看了好久,自己总结了一下下,第一篇博客,呼呼,学到不少

基本概念

vector容器是一个模板类,可以存放任何类型的对象)。vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。

1、定义和初始化

* vector< 类型名 > 标识符 (n)   //定义容器大小为n 

*   vector< 类型名 > 标识符(最大容量,初始所有值);

eg: vector< int > ivec( 10, -1 ); 定义了 ivec 它包含十个int型的元素 每个元素都被初始化为-1

*   vector<类型名> vector<typeName>v2(v1);    或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());

//v2是v1的一个副本,若v1.size()>v2.size()则赋值后v2.size()被扩充为v1.size()。

*   拷贝数组中的元素:int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 };

// 把 ia 的 6 个元素拷贝到 ivec 中 vector< int > ivec( a, a+6 );

// 拷贝 3 个元素 a[2], a[3], a[4] vector< int > ivec( &a[ 2 ], &a[ 5 ] );     //注意第二个指正要指到末尾元素的下一个元素

以下是事例:

1 #include
2 #include
3 using namespace std; 4 int main(){ 5 int a[ 6 ] = { -2, -1, 0, 1, 2, 1024 }; 6 //拷贝数组中的元素 7 vector< int > vec1( a, a+6 ); 8 cout<
<<' '<
<<' '<
<<' '<
<
vec( &a[ 2 ], &a[5] );13 cout<
<<' '<
<<' '<
<<' '<
<
newone;17 newone = vec;18 cout<
<

 

常用方法

c.clear()                              移除容器中所有数据。

c.empty()                            判断容器是否为空。

c.erase(pos)                       删除pos位置的数据

c.erase(beg,end)               删除[beg,end)区间的数据

c.front()                              传回第一个数据。

c.insert(pos,elem)              在pos位置插入一个elem拷贝

c.pop_back()                     删除最后一个数据。

c.push_back(elem)            在尾部加入一个数据。

c.resize(num)                     重新设置该容器的大小

c.size()                              返回容器中实际数据的个数。

c.begin()                           返回指向容器第一个元素的迭代器

c.end()                              返回指向容器最后一个元素的迭代器

使用迭代器

迭代器:迭代器是个所谓的智能指针,具有遍历复杂数据结构的能力,就看做是容器的专用指针吧,用容器时一般都要使用到这个,那种用数组索引的方法反而更加少用了,下面是一个简单的使用迭代器的示例: 

1 //利用迭代器更改容器中的某一个值 2 #include
3 #include
4 using namespace std; 5 int main(){ 6 vector
abc; 7 abc.push_back(1); //push几个值进去 8 abc.push_back(5); 9 abc.push_back(3); 10 abc.push_back(4);11 12 // 迭代器遍历寻遍13 for(vector
::iterator it = abc.begin();it!=abc.end();)14 {15 if(*it ==4)16 it = abc.erase(it);17 else18 ++it;19 }20 cout << "After remove 5:\n";21 for(vector
::iterator i = abc.begin(); i < abc.end(); ++i)22 {23 cout << * i << " ";24 }25 cout << endl;26 return 0;27 }

 

以下是一些简单的程序:

定义一个二维数组

1 #include
2 #include
3 using namespace std; 4 int main(){ 5 int i = 0,j = 0; //容器内部的容器 6 //Array 是10行,且都为0 7 vector< vector
> Array(10,vector
(0)); 8 9 for(j = 0; j < 10; j++)10 {11 for (i = 0; i < 9; i++)12 {13 Array[j].push_back(i);14 }15 }16 //输出17 for( j = 0; j < 10; j++ )18 {19 for(i = 0; i

 

排序与逆向

1 #include
2 #include
3 #include
4 #include
5 using namespace std; 6 int main(){ 7 vector
num; 8 int element; 9 while(cin>>element)10 num.push_back(element);11 12 sort(num.begin(),num.end()); //从大到小排序13 14 reverse(num.begin(),num.end()); //逆向输出15 16 for(int i = 0;i

 

定义二维动态数组

1 #include
2 #include
3 using namespace std; 4 int main(){ 5 int i = 0,j = 0; 6 vector
> Array; 7 vector
line; 8 for(j = 0;j < 20;j++){ 9 Array.push_back(line); //要对每一个vector初始化,初始化列。10 for (i = 0; i < 9; i++ )11 {12 Array[ j ].push_back( i );13 }14 }15 16 for(j = 0;j < 10;j++ )17 {18 for(i = 0; i

 

参考:

转载于:https://www.cnblogs.com/LZYY/p/3242074.html

你可能感兴趣的文章
C#设置程序自启动
查看>>
Hadoop基准测试(一)
查看>>
Linux下解压缩文件命令总结
查看>>
通过cookie验证用户登录
查看>>
js-数组和字符串转化
查看>>
客户端链接如何判断Socket的实时连接
查看>>
读书笔记十四:TCP/IP详解之TCP的成块数据流
查看>>
print语句中逗号(,)和反斜杠(\)的区别
查看>>
contentType
查看>>
Java中HashMap和TreeMap的区别深入理解
查看>>
【2012年终总结】之四 获得CPU信息,剪贴板
查看>>
【转载】c++内存布局
查看>>
深入理解JVM--类的执行机制
查看>>
从Oracle向PPAS移行不成功时的处理
查看>>
Oracle 学习第一篇
查看>>
node js 库的安装
查看>>
[LeetCode] Climbing Stairs
查看>>
Python下探究随机数的产生原理和算法
查看>>
Codevs 2503 失恋28天-缝补礼物
查看>>
在window把项目上传到github
查看>>