- ubuntu12.04环境下使用kvm ioctl接口实现最简单的虚拟机
- Ubuntu 通过无线网络安装Ubuntu Server启动系统后连接无线网络的方法
- 在Ubuntu上搭建网桥的方法
- ubuntu 虚拟机上网方式及相关配置详解
CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.
这篇CFSDN的博客文章简单讲解c++ vector由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.
在c++中,vector是一个十分有用的容器.
作用:它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据.
vector在C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.
特别注意:
使用vector需要注意以下几点:
1.加入头文件 <vector> 。
2.如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低; 。
3.Vector作为函数的参数或者返回值时,需要注意它的写法:
double Distance(vector &a, vector &b) 其中的“&”绝对不能少!!! 。
一维vector 。
创建一维vector:
1
2
|
vector<
int
> nums;
//不指定长度
vector<
int
> nums(n);
//指定长度为n
|
添加元素 。
1
2
3
|
nums.push_back(1);
//直接从数组末端添加
nums[i]=1;
//直接赋值给第i个位置
nums.insert(nums.begin()+i,a);
//在第i+1个元素前插入a
|
删除元素 。
1
2
3
4
5
|
nums.resize(nums.size-i);
//直接将数组长度减少,某种意义上删掉了后面i个
nums.pop_back();
//删掉最后一个元素
nums.erase(nums.begin()+i);
//删掉第i+1个元素
nums.erase(nums.begin()+i,nums.end()+j);
//删除区间[i,j-1],区间从0开始
nums.clear();
//清空
|
其它 。
获取长度:nums.size(),
排序(O(nlogn)):sort(nums.begin(),nums.end()),
翻转:reverse(nums.begin(),nums.end()),
合并两个vector:合并nums1和nums2,并将合并的数组赋值给nums 。
1
2
3
4
|
vector<
int
> nums1(m),nums2(n);
vector<
int
> nums;
nums.resize(m+n);
merge(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),nums);
|
二维vector 。
创建M*n二维vector 。
1
|
vector< vector<
int
> > nums(m,vector<
int
>(n));
//m*n的二维vector
|
解释:
定义了一个vector容器,元素类型为vector ,初始化为包含m个vector 对象,每个对象都是一个新创立的vector 对象的拷贝,而这个新创立的vector 对象被初始化为包含n个0.
vector (n)表示构造一个无名且含n个0的vector 对象.
动态创建m*n的二维vector 。
方法一 。
1
2
3
4
|
vector<vector <
int
> > nums;3
nums.resize(m);
for
(
int
i=0;i<m;i++) nums[i].resize(n);
|
方法二 。
1
2
|
vector<vector <
int
> > nums;
nums.resize(m,vector<
int
>(n));
|
初始化二维数组 。
1
|
vector<vector <
int
> > nums(m ,vector<
int
>(n,0));
//m*n的二维vector,所有元素为0
|
获得二维数组的行数:nums.size(),
获得二维数组的列数:nums[0].size(); 。
数组遍历 。
1
2
3
4
5
6
|
int
m = nums.size(),n = nums[0].size();
for
(
int
i = 0; i < m; i++){
for
(
int
j = 0; j < n; j++){
cout<<nums[i][j]<<endl;
}
}
|
用vector还可以用结构体类型哟 。
以上就是简单讲解c++ vector的详细内容,更多关于c++&vector的资料请关注我其它相关文章! 。
原文链接:https://www.cnblogs.com/TongWY/p/13653822.html?utm_source=tuicool&utm_medium=referral 。
最后此篇关于简单讲解c++ vector的文章就讲到这里了,如果你想了解更多关于简单讲解c++ vector的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
1、流程控制语句主要有if、ii...else、elseif(有时也可以写成else if)、switch四种。 PHP中语句格式为: if(条件满足) {执行语句} if(条件满足) {执行
目录 DFS初步概念 DFS例题-迷宫游戏 题目描述 输入输出格式 输入输出样例
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
This question两年前被问到,但它提到的资源要么不是很有帮助(恕我直言),要么链接不再有效。 必须有一些很好的教程才能理解 Phaser .我已经阅读了 javadoc,但我的眼睛呆滞了,因
这个正则出自这个网站 http://www.regexlab.com/zh/regref.htm 正向预搜索:"(?=xxxxx)","(?!xxxxx)"
chr(9)、chr(10)、chr(13)、chr(32)、chr(34) 所有关于 ASCII码的表格:[url]http://www.asciitable.com/[/url] chr(13)
我是一名优秀的程序员,十分优秀!