-
2019-11-30 10:43:55
最近刷Hankerrank一直遇到需要用到vector类数组长度的问题。之前不知道从哪篇文章上看到了一个错误的结论,知道现在才反应过来它有固定函数:
vector<int> s(10); cout << s.size() << endl;
.size()函数可以返回容器中实际数据的个数,也就是向量数组的长度,C++好久不看都忘了。
下次遇到这种问题建议大家看百度百科或者翻书先查一下有没有对应的函数可用,之后再看论坛看博文(最好是大牛写的)…因为某些文章真的误人子弟。
另附一个网站,有问题都可以查The C++ Resources Network
终于不用修改函数的Input做题了…更多相关内容 -
c++求数组长度 和vector用法
2019-10-05 19:01:19c++求数组长度 int len=sizeof(arr)/size(arr[0]) vector用法 url:https://blog.csdn.net/wkq0825/article/details/82255984 https://blog.csdn.net/veghlreywg/article/details/80400382一、c++求数组长度
int len=sizeof(arr)/size(arr[0])
二、vector用法
2.1vector初始化
(1)vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。 (2)vector<int> a(10,1); //定义了10个整型元素的向量,且给出每个元素的初值为1 (3)vector<int> a(b); //用b向量来创建a向量,整体复制性赋值 (4)vector<int> a(b.begin(),b.begin+3); //定义了a值为b中第0个到第2个(共3个)元素 (5)int b[7]={1,2,3,4,5,9,8}; vector<int> a(b,b+7); //从数组中获得初值 (6)vector<int> ilist4(7);默认值初始化,ilist4中将包含7个元素,每个元素进行缺省的值初始化,对于int,也就是被赋值为0,因此ilist4被初始化为包含7个0。当程序运行初期元素大致数量可预知,而元素的值需要动态获取的时候,可采用这种初始化方式。 (7)vector<int> ilist1;默认初始化,vector为空, size为0,表明容器中没有元素,而且 capacity 也返回 0,意味着还没有分配内存空间。这种初始化方式适用于元素个数未知,需要在程序中动态添加的情况。 (8)vector<int> ilist {1,2,3.0,4,5,6,7};ilist 初始化为列表中元素的拷贝,列表中元素必须与ilist的元素类型相容,本例中必须是与整数类型相容的类型,整形会直接拷贝,其他类型会进行类型转换。
2.2、vector对象的几个重要操作,举例说明如下:
(1)a.assign(b.begin(), b.begin()+3); //b为向量,将b的0~2个元素构成的向量赋给a (2)a.assign(4,2); //是a只含4个元素,且每个元素为2 (3)a.back(); //返回a的最后一个元素 (4)a.front(); //返回a的第一个元素 (5)a[i]; //返回a的第i个元素,当且仅当a[i]存在 (6)a.clear(); //清空a中的元素 (7)a.empty(); //判断a是否为空,空则返回ture,不空则返回false (8)a.pop_back(); //删除a向量的最后一个元素 (9)a.erase(a.begin()+0,a.begin()+3); //删除a中第0个到第2个元素,也就是说删除的元素从a.begin()+0算起(包括它)一直到a.begin()+3(不包括它) (10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5 (11)a.insert(a.begin()+1,5); //在a的第1个元素(从第0个算起)的位置插入数值5,如a为1,2,3,4,插入元素后为1,5,2,3,4 (12)a.insert(a.begin()+1,3,5); //在a的第1个元素(从第0个算起)的位置插入3个数,其值都为5 (13)a.insert(a.begin()+1,b+3,b+6); //b为数组,在a的第1个元素(从第0个算起)的位置插入b的第3个元素到第5个元素(不包括b+6),如b为1,2,3,4,5,9,8 ,插入元素后为1,4,5,9,2,3,4,5,9,8 (14)a.size(); //返回a中元素的个数; (15)a.capacity(); //返回a在内存中总共可以容纳的元素个数 (16)a.resize(10); //将a的现有元素个数调至10个,多则删,少则补,其值随机 (17)a.resize(10,2); //将a的现有元素个数调至10个,多则删,少则补,其值为2 (18)a.reserve(100); //将a的容量(capacity)扩充至100,也就是说现在测试a.capacity();的时候返回值是100.这种操作只有在需要给a添加大量数据的时候才 显得有意义,因为这将避免内存多次容量扩充操作(当a的容量不足时电脑会自动扩容,当然这必然降低性能) (19)a.swap(b); //b为向量,将a中的元素和b中的元素进行整体性交换 (20)a==b; //b为向量,向量的比较操作还有!=,>=,<=,>,<
2.3、顺序访问vector的几种方式,举例说明如下:
(1)向向量a中添加元素
1、1 vector<int> a; 2 for(int i=0;i<10;i++) 3 a.push_back(i);
2、也可以从数组中选择元素向向量中添加
int a[6]={1,2,3,4,5,6}; vector<int> b; for(int i=1;i<=4;i++) b.push_back(a[i]);
3、也可以从现有向量中选择元素向向量中添加
int a[6]={1,2,3,4,5,6}; vector<int> b; vector<int> c(a,a+4); for(vector<int>::iterator it=c.begin();it<c.end();it++) b.push_back(*it);
4、也可以从文件中读取元素向向量中添加
ifstream in("data.txt"); vector<int> a; for(int i; in>>i) a.push_back(i);
5、【误区】
这种定义时候没有说明长度的只能使用push_backvector<int> a; for(int i=0;i<10;i++) a[i]=i;
//这种做法以及类似的做法都是错误的。
(2)从向量中读取元素
1、通过下标方式读取int a[6]={1,2,3,4,5,6}; vector<int> b(a,a+4); for(int i=0;i<=b.size()-1;i++) cout<<b[i]<<" ";
2、通过遍历器方式读取
int a[6]={1,2,3,4,5,6}; vector<int> b(a,a+4); for(vector<int>::iterator it=b.begin();it!=b.end();it++) cout<<*it<<" ";
2.4、几种重要的算法,使用时需要包含头文件:
#include<algorithm> (1)sort(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素进行从小到大排列 (2)reverse(a.begin(),a.end()); //对a中的从a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素为1,3,2,4,倒置后为4,2,3,1 (3)copy(a.begin(),a.end(),b.begin()+1); //把a中的从a.begin()(包括它)到a.end()(不包括它)的元素复制到b中,从b.begin()+1的位置(包括它)开始复制,覆盖掉原有元素 (4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置 vector<int>::iterator pos; pos=find(a.begin(),a.end(),n); if(pos!=a.end()) return false; else return true;
-
C++ 获取std::vector 长度 大小
2021-10-08 21:46:44vector> #include <iostream> using namespace std; int main() { vector<int>obj;//创建一个向量存储容器 int for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 { obj.push.....obj.size()
如
#include <string.h> #include <vector> #include <iostream> using namespace std; int main() { vector<int>obj;//创建一个向量存储容器 int for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据 { obj.push_back(i); cout<<obj[i]<<","; } for(int i=0;i<5;i++)//去掉数组最后一个数据 { obj.pop_back(); } cout<<"\n"<<endl; for(int i=0;i<obj.size();i++)//size()容器中实际数据个数 { cout<<obj[i]<<","; } return 0; }
-
vector数组长度获取
2021-09-30 12:29:48vector数组长度获取 以int型举例子 #include<iostream> #include<vector> #define SIZE 10 #define VALUE 1 using namespace std; int main() { vector<int> arr(SIZE,VALUE);//初始化...vector数组长度获取
-
以int型一维数组举例子
#include<iostream> #include<vector> #define SIZE 10 #define VALUE 1 using namespace std; int main() { vector<int> arr(SIZE,VALUE);//初始化int型一位数组,含SIZE个值,初始值为VALUE cout <<"arr容器元素个数为:"<< arr.size() << endl;//显示arr所含元素个数 for (int i = 0; i < arr.size(); i++) { arr[i] = i + 1; cout << arr[i] << " "; } }
运行结果为:
总而言之,vector定义的一位数组可以用内嵌函数size()来获取所含元素个数。
-
-
C++ 中求string和vector容器大小、长度
2020-01-10 15:20:01string: string str("hello world"); str.size(); str.length(); strlen(str.c_str()); end(str) - begin(str) 固定容器大小的array: sizeof(array)/sizeof(array)[0];...vector: ...vector是可变大小容... -
vector 声明固定长度的数组
2021-08-11 12:47:14一维数组 二维数组 vector<int> res(10); vector<vector<int>> res(10,vector<int>(10,INT32_MAX)) -
VS2015调试vector的文件
2018-11-14 10:19:27最近使用vs2015调试C++程序,结果发现了一个很奇怪的问题:调试时无法查看stl里面string,vector,list等容器类的值了,将这个文件加入到所调试工程的资源文件里,就可以正常使用了 -
C++ STL标准模板库vector的求长度size()-1的一个小坑
2019-02-11 00:32:33这次写文章主要是因为在写算法的...其中v是一个变长数组vector类型,按照道理来说,当v的长度为0时,v.size()-1的值为-1,循环不会开始,代码段A不会执行,但是我在调试的过程中,发现当v的长度为0时,代码段A也会... -
vector 声明时长度预设
2017-11-20 10:53:35固定长度的vector设置技巧 -
C++中,求整型int 数组的长度和实际长度,vector数组长度
2021-04-06 13:33:42我想求arr 的实际长度是多少,没找到方法,自己写了一个方法,不知道是否可行。 int arr[5]; arr[1] = 1; arr[2] = 2; arr[3] = 3; // 模拟数据,int数组arr 实际长度 为 3 int len = end(arr)-begin(arr)... -
C++ 中Vector常用基本操作
2020-12-31 02:22:45标准库vector类型是C++中使用较多的一种类模板,vector类型相当于一种动态的容器,在vector中主要有一些基本的操作,下面通过本文给大家介绍,具体内容如下所示: (1)头文件#include<vector>. (2)创建vector对象,... -
python 中自己写方法 计算向量长度 / 实现向量归一化
2021-02-09 19:50:19# coding=utf-8import mathclass Vector(object):"""docstring for Vector""""""根据坐标轴列表输入 创建向量, 并创建该向量所处的空间维度"""def __init__(self, coordinates):super(Vector, self).__init__()try:... -
C++ vector操作实现
2020-12-26 09:10:041、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低; 2、Vector作为函数的参数或者返回值时,需要注意它的写法: double Distance(vector<int>&a, vector<int>&b)... -
2021-12-11 C++的vector按字符长度排序
2021-12-11 09:55:52Lambda 表达式排序 // 从小到大排序 sort(records.begin(), records.end(), [](string a, string b){ return a.length() < b.length(); }); 自定义静态函数 static bool cmp(string a, string b){ ... -
固定长度的vector和queue用法介绍
2017-09-08 21:10:55固定长度的vector和queue -
OpenCV——计算轮廓长度/周长和面积
2021-06-22 14:33:52轮廓面积 轮廓面积是指每个轮廓中所有的像素点围成区域的面积,单位为像素。 double contourArea( InputArray contour, bool oriented = false ...函数第一个参数表示轮廓的像素点,数据类型为vector或者Mat,相邻的 -
C++开篇(三):vector实现固定长度数组
2018-03-12 15:11:46vector实现固定长度数组,数组扩展,元素插入以及元素删除#include <iostream>#include <vector>#include <algorithm>using std::endl;using std::cout;using std::... -
unity中计算vector3的角度,带正负的代码实现
2019-01-08 13:38:06unity中Vector3自带了一个Vector3.Angle的函数,用于计算两个vector3向量的夹角,文档中描述的: The angle returned is always the non reflex angle between the two vectors – ie the smaller of the two ... -
关于STL中vector容器的一些总结
2021-01-01 06:12:59vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似。实际上更专业的描述为:vector是一个多功能的,能够操作多种数据结构和算法的模板类和函数库,vector之所以被认为是一个... -
简单讲解c++ vector
2021-01-21 15:23:472.如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低; 3.Vector作为函数的参数或者返回值时,需要注意它的写法: double Distance(vector &a, vector &b) 其中的 -
用Bert模型计算句子的vector
2019-07-21 17:57:241. Bert模型 Bert模型是2018年google开源出来的NLP的模型,具体实现请参考:... 2. Bert模型计算句子的vector 2.1 通过模型获取句子的encoder层 model = modeling.BertModel( config=bert_config, ... -
C++ 向vector中读入固定长度为n的一组数据
2018-07-06 15:01:38(1) 读入固定长度为n的一组数据#include<iostream> #include<vector> using namespace std; int main() { // 读入长度为n的数据 int n; cin >> n; vector<int... -
C++ vector二维数组初始化以及获取数组长度
2017-07-18 10:31:43一维和二维动态数组初始化为: std::vector vec(10,90); //将10个一维动态数组初始为90 std::vector > vec(row,vector(col,0)); //初始化row * col二维动态数组,初始化值为0 -
C++ STL vector 不想初始化长度怎么办
2020-01-27 17:45:08vector方便的地方就在于不用在意长度的限制,但是如果一开始为vector读取输入的时候,我们没有初始化vector大小的话,很容易出现下标越界的情况,然后程序不跑了。。。 有时候未知输入的长度时,vector开小了怕越界... -
C++ 向vector中读入不定长度的一组数据
2018-08-30 17:21:14向vector中读入不定长度的一组数据 (1) 使用getchar()函数 #include<iostream> #include<vector> using namespace std; int main() { vector<int> ivec; int num;... -
Vector3——简单的3D向量类
2015-05-08 11:07:09vector3 类,实现的功能 1、重载赋值运算符“=” 2、重载“==”和“!=”操作符 3、置为零向量 4、重载一元运算符“-” 5、重载二元预算法“+”“-” 6、标量的乘除法 7、重载自反运算符 8、向量单位化 9、向量的... -
C语言中数组长度的计算详解
2020-05-23 18:23:011) C语言中计算数组长度大小 C语言字符串长度的计算可以使用strlen(str); 但是对于数组长度的大小却没有相关函数可以使用; C语言数组长度的大小可以使用: int main() { int arr[] = {1,2,3,4,5}; int length = ...
收藏数
278,885
精华内容
111,554