c++ vector

创建vector

vector的几个别名:向量、动态数组

头文件:

#include <vector>

记得加上std命名空间,不然会报错

using namespace std;

创建vector

vector<int> A;//一维动态数组 vector<vector<int> > B;//二维动态数组

创建二维动态数组时,与 > 之间需要" "空格间隔,否则将会被识别为位运算符>>

常用函数

真的很常用的几个嗷

//push_back() 在向量的末尾插入值,如果有必要会扩展向量的大小 A.push_back(c); //size() 显示向量的大小 A.size(); //begin() 返回一个指向向量开头的迭代器 //end() 返回一个指向向量末尾的迭代器 // 使用迭代器 iterator 访问值 vector<int>::iterator v = vec.begin(); while( v != vec.end()) { cout << "value of v = " << *v << endl; v++; } //访问vector中的值 cout << A[i];//此时vector退化为数组 //clear() 清除向量中的内容 A.clear();

resize()

//resize(size_type n) 调整容器大小,使其包含n个元素 size_type是无符号整型 //resize(size_type n, const value_type& val) 调整容器大小,如果当前大小小于n需要扩容,则将新元素初始化为val的副本,否则将对它们进行值初始化?. A.resize(5); A.resize(8,100);

如果n小于当前容器大小,则内容减少到n,删除超出范围的元素
如果n大于当前容器大小,则在末尾插入元素来扩展内容达到n的大小
如果n也大于当前容器容量,将自动重新分配已分配的存储空间?(啥意思没看懂)

reserve()

除了resize()还有一个reserve()与之对应,reserve用来改变capacity的值。

具体内容可以参考

https://www.runoob.com/note/27430

二维vector的赋值

1、push_back()

使用push_back()赋值

vector<int> A;//一维动态数组 vector<vector<int> > B;//二维动态数组 A.push_back(1); A.push_back(2); A.push_back(3); B.push_back(A); A.clear(); A.push_back(4); A.push_back(5); A.push_back(6); B.push_back(A); A.clear();

vector B中:

1 2 3 4 5 6

2、定义并赋初值或遍历赋值

vector<vector<int> > A(5,vector<int>(3,0));//5行3列,初值为0

除了赋初值也可以定义大小后再遍历赋值

3、resize()调整容器大小或遍历赋值

vector<int> A; A.resize(m);//m行 for(int i = 0; i < m; i++) A[i].resize(n);//n列 //遍历赋值 for(int i = 0; i < m; i++) { for(int j = 0; j < n; j++) { a[i][j] = a; } }

__EOF__

本文作者cheng_zhi
本文链接https://www.cnblogs.com/chengzhid/p/16748034.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   cheng_zhi  阅读(43)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示