C++_vector使用规范

合集下载

c++中vector的用法详解

c++中vector的用法详解

c++中vector的用法详解vector(向量): C++中的一种数据结构,确切的讲是一个类.它相当于一个动态的数组,当程序员无法明白自己需要的数组的规模多大时,用其来解决咨询题能够达到最大节约空间的目的.用法:1.文件包含:首先在程序开头处加上#include以包含所需要的类文件vector还有一定要加上using namespace std;2.变量声明:2.1 例:声明一个int向量以替代一维的数组:vector a;(等于声明了一个int数组a[],大小没有指定,能够动态的向里面添加删除)。

2.2 例:用vector代替二维数组.事实上只要声明一个一维数组向量即可,而一个数组的名字事实上代表的是它的首地址,因此只要声明一个地址的向量即可,即:vector a.同理想用向量代替三维数组也是一样,vector a;再往上面依此类推.3.具体的用法以及函数调用:3.1 如何得到向量中的元素?其用法和数组一样:例如:vector aint b = 5;a.push_back(b);//该函数下面有详解cout c.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()返回指向容器最后一个元素的迭代器4.内存治理与效率1》使用reserve()函数提早设定容量大小,幸免多次容量扩充操作导致效率低下。

关于STL容器,最令人赞扬的特性之一就是是只要不超过它们的最大大小,它们就能够自动增长到足以容纳你放到里面去的数据。

c++向量的用法

c++向量的用法

c++向量的用法C++中的向量(Vector)是一种动态数组,它能够自动调整大小以适应不同的元素数量。

向量属于标准模板库(Standard Template Library,STL)的一部分,它提供了许多方便的函数和操作符,用于方便地处理和操作元素。

下面将介绍向量的用法及相关参考内容。

1. 定义和初始化向量向量的定义需要包含<vector>头文件,并使用std命名空间。

我们可以使用以下方式来定义和初始化向量:```cpp#include <vector>#include <iostream>int main() {// 定义一个整数类型的向量std::vector<int> v1;// 定义一个浮点类型的向量,初始容量为10std::vector<float> v2(10);// 定义一个字符串类型的向量,并初始化为{"Hello", "World"}std::vector<std::string> v3{"Hello", "World"};// 定义一个空向量,并指定初始容量为5std::vector<char> v4(5, 'a');// 输出向量中的元素for (int i : v1) {std::cout << i << " ";}std::cout << std::endl;for (float f : v2) {std::cout << f << " ";}std::cout << std::endl;for (std::string str : v3) {std::cout << str << " ";}std::cout << std::endl;for (char c : v4) {std::cout << c << " ";}std::cout << std::endl;return 0;}```参考内容:- 《C++ Primer Plus》- 《C++标准库-深度剖析》,侯捷- 《C++标准库速查表》2. 向向量中添加元素向量提供了几个函数来添加元素:- push_back(value):在向量的末尾添加一个元素;- insert(iterator, value):在指定位置插入一个元素;- emplace(iterator, args...):在指定位置使用参数构造一个元素;- insert(iterator, n, value):在指定位置插入n个元素;- insert(iterator, first, last):在指定位置插入另一个区间内的元素。

c++中vector的用法详解vector类用法

c++中vector的用法详解vector类用法

c++中vector的用法详解|vector类用法vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.用法:1.文件包含:首先在程序开头处加上#include以包含所需要的类文件vector还有一定要加上using namespace std;2.变量声明:2.1 例:声明一个int向量以替代一维的数组:vector a;(等于声明了一个int数组a[],大小没有指定,可以动态的向里面添加删除)。

2.2 例:用vector代替二维数组.其实只要声明一个一维数组向量即可,而一个数组的名字其实代表的是它的首地址,所以只要声明一个地址的向量即可,即:vector a.同理想用向量代替三维数组也是一样,vector a;再往上面依此类推.3.具体的用法以及函数调用:3.1 如何得到向量中的元素?其用法和数组一样:例如:vector aint b = 5;a.push_back(b);//该函数下面有详解cout<1.push_back 在数组的最后添加一个数据2.pop_back 去掉数组的最后一个数据3.at 得到编号位置的数据4.begin 得到数组头的指针5.end 得到数组的最后一个单元+1的指针6.front 得到数组头的引用7.back 得到数组的最后一个单元的引用8.max_size 得到vector最大可以是多大9.capacity 当前vector分配的大小10.size 当前使用数据的大小11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值12.reserve 改变当前vecotr所分配空间的大小13.erase 删除指针指向的数据项14.clear 清空当前的vector15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)17.empty 判断vector是否为空18.swap 与另一个vector交换数据3.2 详细的函数实现功能:其中vector c.c.clear()移除容器中所有数据。

c++ vector 用法

c++ vector 用法

c++ vector 用法在C++ 中,vector 是一个十分有用的容器。

它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

C++ 中数组很坑,有没有类似Python 中list 的数据类型呢?类似的就是vector!vector 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。

和string 对象一样,标准库将负责管理与存储元素相关的内存。

我们把vector 称为容器,是因为它可以包含其他对象。

一个容器中的所有对象都必须是同一种类型的。

一、什么是vector?向量(vector)是一个封装了动态大小数组的顺序容器(Sequence Container)。

跟任意其它类型容器一样,它能够存放各种类型的对象。

可以简单的认为,向量是一个能够存放任意类型的动态数组。

二、容器特性1.顺序序列顺序容器中的元素按照严格的线性顺序排序。

可以通过元素在序列中的位置访问对应的元素。

2.动态数组支持对序列中的任意元素进行快速直接访问,甚至可以通过指针算述进行该操作。

操供了在序列末尾相对快速地添加/删除元素的操作。

3.能够感知内存分配器的(Allocator-aware)容器使用一个内存分配器对象来动态地处理它的存储需求。

三、基本函数实现1.构造函数•vector():创建一个空vector•vector(int nSize):创建一个vector,元素个数为nSize •vector(int nSize,const t& t):创建一个vector,元素个数为nSize,且值均为t•vector(const vector&):复制构造函数•vector(begin,end):复制[begin,end)区间内另一个数组的元素到vector中2.增加函数•void push_back(const T& x):向量尾部增加一个元素X •iterator insert(iterator it,const T& x):向量中迭代器指向元素前增加一个元素x•iterator insert(iterator it,int n,const T& x):向量中迭代器指向元素前增加n个相同的元素x•iterator insert(iterator it,const_iteratorfirst,const_iterator last):向量中迭代器指向元素前插入另一个相同类型向量的[first,last)间的数据3.删除函数•iterator erase(iterator it):删除向量中迭代器指向元素•iterator erase(iterator first,iterator last):删除向量中[first,last)中元素•void pop_back():删除向量中最后一个元素•void clear():清空向量中所有元素4.遍历函数•reference at(int pos):返回pos位置元素的引用•reference front():返回首元素的引用•reference back():返回尾元素的引用•iterator begin():返回向量头指针,指向第一个元素•iterator end():返回向量尾指针,指向向量最后一个元素的下一个位置•reverse_iterator rbegin():反向迭代器,指向最后一个元素•reverse_iterator rend():反向迭代器,指向第一个元素之前的位置5.判断函数•bool empty() const:判断向量是否为空,若为空,则向量中无元素6.大小函数•int size() const:返回向量中元素的个数•int capacity() const:返回当前向量所能容纳的最大元素值•int max_size() const:返回最大可允许的 vector 元素数量值7.其他函数•void s;):交换两个同类型向量的数据•void assign(int n,const T& x):设置向量中前n个元素的值为x•void assign(const_iterator first,const_iteratorlast):向量中[first,last)中元素设置成当前向量元素8.看着清楚1.push_back 在数组的最后添加一个数据2.pop_back 去掉数组的最后一个数据3.at 得到编号位置的数据4.begin 得到数组头的指针5.end 得到数组的最后一个单元+1的指针6.front 得到数组头的引用7.back 得到数组的最后一个单元的引用8.max_size 得到vector最大可以是多大9.capacity 当前vector分配的大小10.size 当前使用数据的大小11.resize 改变当前使用数据的大小,如果它比当前使用的大,者填充默认值12.reserve 改变当前vecotr所分配空间的大小13.erase 删除指针指向的数据项14.clear 清空当前的vector15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1)16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1)17.empty 判断vector是否为空18.swap 与另一个vector交换数据四、基本用法#include < vector>using namespace std;五、简单介绍1.vector<类型>标识符2.vector<类型>标识符(最大容量)3.vector<类型>标识符(最大容量,初始所有值)4.Int i[5]={1,2,3,4,5}vector<类型>vi(I,i+2);//得到i索引值为3以后的值5.vector< vector< int> >v; 二维向量//这里最外的<>要有空格。

vc++_之vector使用方法

vc++_之vector使用方法

vector属于std命名域的,因此需要通过命名限定,如下完成你的代码:
using std::vector;
vector&lt;int&gt; vInts;
或者连在一起,使用全名:
std::vector&lt;int&gt; vInts;
建议使用全局的命名域方式:using namespace std;
int iVal2 = v.at(7);
// bounds checked - will throw if out of range
} catch(const exception&amp; e) {
返回容器中指定位置的一个引用。
创建一个vector
vector容器提供了多种创建方法,下面介绍几种常用的。
创建一个Widget类型的空的vector对象:
vector&lt;Widget&gt; vWidgets;
创建一个包含500个Widget类型数据的vector:
== m_lpFDD-&gt;szWindowTitle);
break;
}
case FM_ENDSWITH: {
retVal = (szStringToCompare.Right(m_lpFDD-&gt;szMatchStr.GetLength())
== m_lpFDD-&gt;szMatchStr);
FM_IS,
FM_STARTSWITH,
FM_ENDSWITH,
FM_CONTAINS
};
typedef struct tagFindStr {

C++中vector的使用

C++中vector的使用

标准库Vector类型使用需要的头文件:#include <vector>Vector:Vector 是一个类模板。

不是一种数据类型。

Vector<int>是一种数据类型。

一、定义和初始化Vector<T> v1; //默认构造函数v1为空Vector<T> v2(v1);//v2是v1的一个副本Vector<T> v3(n,i);//v3包含n个值为i的元素Vector<T> v4(n); //v4含有n个值为0的元素二、值初始化1> 如果没有指定元素初始化式,标准库自行提供一个初始化值进行值初始化。

2> 如果保存的式含有构造函数的类类型的元素,标准库使用该类型的构造函数初始化。

3> 如果保存的式没有构造函数的类类型的元素,标准库产生一个带初始值的对象,使用这个对象进行值初始化。

三、Vector对象最重要的几种操作1. v.push_back(t) 在数组的最后添加一个值为t的数据2. v.size() 当前使用数据的大小3. v.empty() 判断vector是否为空4. v[n] 返回v中位置为n的元素5. v1=v2 把v1的元素替换为v2元素的副本6. v1==v2 判断v1与v2是否相等7. !=、<、<=、>、>= 保持这些操作符惯有含义vector容器类型vector容器是一个模板类,可以存放任何类型的对象(但必须是同一类对象)。

vector对象可以在运行时高效地添加元素,并且vector中元素是连续存储的。

vector的构造函数原型:template<typename T>explicit vector(); // 默认构造函数,vector对象为空explicit vector(size_type n, const T& v = T()); // 创建有n个元素的vector 对象vector(const vector& x);vector(const_iterator first, const_iterator last);注:vector容器内存放的所有对象都是经过初始化的。

C++中vector使用详细说明(转)

C++中vector使用详细说明(转)

C++中vector使⽤详细说明(转)转⾃:⼀、向量的介绍向量 vector 是⼀种对象实体, 能够容纳许多其他类型相同的元素, 因此⼜被称为容器。

与string相同, vector 同属于STL(Standard Template Library, 标准模板库)中的⼀种⾃定义的数据类型, 可以⼴义上认为是数组的增强版。

在使⽤它时, 需要包含头⽂件 vector, #include<vector>vector 容器与数组相⽐其优点在于它能够根据需要随时⾃动调整⾃⾝的⼤⼩以便容下所要放⼊的元素。

此外, vector 也提供了许多的⽅法来对⾃⾝进⾏操作。

⼆、向量的声明及初始化vector 型变量的声明以及初始化的形式也有许多, 常⽤的有以下⼏种形式:vector<int> a ; //声明⼀个int型向量avector<int> a(10) ; //声明⼀个初始⼤⼩为10的向量vector<int> a(10, 1) ; //声明⼀个初始⼤⼩为10且初始值都为1的向量vector<int> b(a) ; //声明并⽤向量a初始化向量bvector<int> b(a.begin(), a.begin()+3) ; //将a向量中从第0个到第2个(共3个)作为向量b的初始值除此之外, 还可以直接使⽤数组来初始化向量:int n[] = {1, 2, 3, 4, 5} ;vector<int> a(n, n+5) ; //将数组n的前5个元素作为向量a的初值vector<int> a(&n[1], &n[4]) ; //将n[1] - n[4]范围内的元素作为向量a的初值三、元素的输⼊及访问元素的输⼊和访问可以像操作普通的数组那样, ⽤cin>>进⾏输⼊, cout<<a[n]这样进⾏输出:⽰例:1 #include<iostream>2 #include<vector>34 using namespace std ;56 int main()7 {8 vector<int> a(10, 0) ; //⼤⼩为10初值为0的向量a910 //对其中部分元素进⾏输⼊11 cin >>a[2] ;12 cin >>a[5] ;13 cin >>a[6] ;1415 //全部输出16 int i ;17 for(i=0; i<a.size(); i++)18 cout<<a[i]<<" " ;1920 return 0 ;21 }在元素的输出上, 还可以使⽤遍历器(⼜称迭代器)进⾏输出控制。

c vector用法

c vector用法

c vector用法摘要:1.C++中的容器2.C vector 的定义与初始化3.C vector 的基本操作4.C vector 的常用功能5.C vector 的注意事项正文:C++是一种功能强大的编程语言,它提供了丰富的数据结构和算法,以满足各种编程需求。

在C++中,容器是一种重要的数据结构,它可以存储和管理数据。

今天我们将介绍C++中的一种常用容器——C vector。

C vector,中文名为C 向量,是C++标准库中的一个容器,用于存储同一类型的数据元素。

C vector 可以在程序运行过程中动态地调整其大小,因此它非常适合存储动态数据。

一、C vector 的定义与初始化要使用C vector,首先需要包含相应的头文件<vector>。

然后,可以使用以下方式定义一个C vector:```vector<数据类型> 变量名(容量);```其中,数据类型可以是int、float、double 等任意类型,容量表示C vector 的初始大小。

例如,定义一个存储整数的C vector:```vector<int> nums(10);```定义之后,C vector 会自动分配内存,并将所有元素初始化为0 或0.0。

二、C vector 的基本操作C vector 提供了许多基本操作,包括访问、修改、添加和删除元素等。

以下是一些常用的操作:1.访问元素:使用下标操作符[],如下:```int num = nums[i];```2.修改元素:使用赋值操作符=,如下:```ums[i] = num;```3.添加元素:使用insert() 函数,如下:```ums.insert(nums.begin(), num);```4.删除元素:使用erase() 函数,如下:```ums.erase(nums.begin());```三、C vector 的常用功能C vector 还提供了许多有用的功能,包括遍历、排序、查找等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++中的vector使用规范一、概述vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。

vector是一个容器,它能够存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,可以动态改变大小。

Vector初始化vector<ElemType>创建一个空的vectorvector<ElemType> c1(c2)复制一个vector。

vector <ElemType> c(n)创建一个vector,含有n个数据,数据均已缺省构造产生。

vector <ElemType> c(n, elem)创建一个含有n个elem拷贝的vector。

vector <ElemType> c(beg,end)创建一个以[beg;end)区间的vector。

例如:vector<string> v3;vector<string> v(5,"hello");vector<string> v2(v.begin(),v.end());vector<string> v4(v);vector<int> v5(4);二、以上是vector容器的简单介绍,下面将详细介绍它的其他功能:1. 为了使用vector,必须在你的头文件中包含下面的代码:#include <vector>2. vector属于std命名域的,因此需要通过命名限定,可以在文件开头加上using std::vector; 或者using namespace std;或者直接在使用vector的代码前加前缀std::vector<int> myHouse;3. vector提供如下函数或操作:下面列举了部分常用的功能// 定义一个vectorstd::vector<int> c;// 可以使用的功能c.assign(beg,end)将[beg; end)区间中的数据赋值给cc.assign(n,elem)将n个elem的拷贝赋值给cc.clear() 移除容器中所有数据。

数组大小为0,内存不变c.empty() 判断容器是否为空。

为空返回1,否则返回0c.erase(pos) 删除pos位置的数据//pos为指针,数组大小size减1,内存不变c.erase(beg,end) 删除[beg,end)区间的数据// beg、end为指针,size减小,内存不变c.front() 传回第一个数据。

c.back() 传回最后一个数据,不检查这个数据是否存在c.insert(pos,elem)在pos位置插入一个elem拷贝,传回新数据位置c.insert(pos,n,elem)在pos位置插入n个elem数据,无返回值c.insert(pos,beg,end)在pos位置插入在[beg,end)区间的数据。

无返回值。

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

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

c.resize(num) 重新设置该容器的大小c.reserve(num) 重新设置预留空间的大小,功能类似resize,但有区别c.size() 回容器中实际数据的个数。

c.begin() 返回指向容器第一个元素的迭代器c.end() 返回迭代器中末端元素的下一个,指向一个不存在元素的指针c.rbegin() 返回Vector尾部的逆迭代器c.rend() 返回Vector起始的逆迭代器==、!=、<、<=、>、>= 保持这些操作符惯有含义c[n] 返回v中位置为n的元素,下标不能添加元素,只能操作存在的元素c.at(idx)传回索引idx所指的数据,如果idx越界,抛出out_of_rangec1.swap(c2)将c1和c2元素互换swap(c1,c2)同上操作c.~ vector <ElemType>()销毁所有数据,释放内存,即:size()为0,内存capacity()为0对于const vector<typeName>只能用vector<typeName>::const_iterator类型的指针访问两个vectors被认为是相等的,如果:1.它们具有相同的容量size() 与预留空间无关reserve()2.所有相同位置的元素相等.vectors之间大小的比较是按照词典规则三、下面描述一下什么是迭代器迭代器相当于指针,例如:// 定义一个迭代器std::vector<int>::iterator p;// 指向容器的首个元素for(vector<int>::iterator p= myVec.begin(); p!= myVec.end(); p++ )例:1.vector 的数据的存入和输出:#include<stdio.h>#include<vector>#include <iostream>using namespace std;void main(){int i = 0;vector<int> v;for( i = 0; i < 10; i++ ){v.push_back( i );//把元素一个一个存入到vector中}对存入的数据清空for( i = 0; i < v.size(); i++ )//v.size() 表示vector存入元素的个数{cout << v[ i ] << " "; //把每个元素显示出来}cout << endl;}注:你也可以用v.begin()和v.end() 来得到vector开始的和结束的元素地址的指针位置。

你也可以这样做:vector<int>::iterator iter;for( iter = v.begin(); iter != v.end(); iter++ ){cout << *iter << endl;}2. 对于二维vector的定义。

1)定义一个10个vector元素,并对每个vector符值1-10。

#include<stdio.h>#include<vector>#include <iostream>using namespace std;void main(){int i = 0, j = 0;//定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。

所以每一行的长度是可以变化的。

之所以用到vector<int>(0)是对vector初始化,否则不能对vector存入元素。

vector< vector<int> > Array( 10, vector<int>(0) );for( j = 0; j < 10; j++ ){for ( i = 0; i < 9; i++ ){Array[ j ].push_back( i );}}for( j = 0; j < 10; j++ ){for( i = 0; i < Array[ j ].size(); i++ ){cout << Array[ j ][ i ] << " ";}cout<< endl;}}2)定义一个行列都是变化的数组。

#include<stdio.h>#include<vector>#include <iostream>using namespace std;void main(){int i = 0, j = 0;vector< vector<int> > Array;vector< int > line;for( j = 0; j < 10; j++ ){Array.push_back( line );//要对每一个vector初始化,否则不能存入元素。

for ( i = 0; i < 9; i++ ){Array[ j ].push_back( i );}}for( j = 0; j < 10; j++ ){for( i = 0; i < Array[ j ].size(); i++ ){cout << Array[ j ][ i ] << " ";}cout<< endl;}}使用vettor erase 指定元素#include "iostream"#include "vector"using namespace std;int main(){vector<int> arr;arr.push_back(6);arr.push_back(8);arr.push_back(3);arr.push_back(8);for(vector<int>::iterator it=arr.begin(); it!=arr.end(); ){if(* it == 8){it = arr.erase(it);}else{++it;}}cout << "After remove 8:\n";for(vector<int>::iterator it = arr.begin(); it < arr.end(); ++it) {cout << * it << " ";}cout << endl;}3、Vector删除操作内存比较#include<iostream>#include<vector>#include<cassert>#include<string>using namespace std;void main(){//vector 对象初始化vector<string> v(5,"hello");vector<string> v2(v.begin(),v.end());vector<string> v3;vector<string> v4(v);vector<int> v5(4);//vector对象操作成员函数assert(v==v4);v4.reserve(11);//预留内存大小,存储空间assert(v==v4);//v4.resize(11); //assert(v==v4);改变数组的大小v.push_back("li");v.push_back("si");v.push_back("laalaa");v.push_back("you");cout<<"v.size_1= "<<v.size()<<endl; //v.size_1= 9 cout << "capacity:" << v.capacity() << endl; //v.capacity:10 v.pop_back();v.pop_back();v.pop_back();cout<<"v.size_2 = "<<v.size()<<endl; //v.size_2= 6 cout << "capacity:" << v.capacity() << endl; //v.capacity:10 v.erase(v.begin());cout<<"v.size_3 = "<<v.size()<<endl; //v.size_3= 5 cout << "capacity:" << v.capacity() << endl; //v.capacity:10 v.clear();cout<<"v.size_4 = "<<v.size()<<endl; //v.size_4=0 cout << "capacity:" << v.capacity() << endl; //v.capacity:10 v.~vector<string>();cout<<"v.size_5 = "<<v.size()<<endl; //v.size_5=0 cout << "capacity:" << v.capacity() << endl; //v.capacity:0 }。

相关文档
最新文档