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的使用

标准库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 还提供了许多有用的功能,包括遍历、排序、查找等。

C++ vector的用法(整理)

C++ vector的用法(整理)
vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。vector 是C++ STL的一个重要成员,使用它时需要包含头文件:
#include<vector>;
一、vector 的初始化:可以有五种方式,举例说明如下:
(1) vector<int> a(10); //定义了10个整型元素的向量(尖括号中为元素类型名,它可以是任何合法的数据类型),但没有给出初值,其值是不确定的。
(4)find(a.begin(),a.end(),10); //在a中的从a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
(8)a.pop_back(); //删除a向量的最后一个元素
(9)a.erase(a.begin()+1,a.begin()+3); //删除a中第1个(从第0个算起)到第2个元素,也就是说删除的元素从a.begin()+1算起(包括它)一直到a.begin()+3(不包括它)
(10)a.push_back(5); //在a的最后一个向量后插入一个元素,其值为5
(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个)元素
(14)a.size(); //返回a中元素的个数;
(15)a.capacity(); //返回a在内存中总共可以容纳的元素个数

linux c vector用法

linux c vector用法

linux c vector用法Linux C Vector用法在C语言中,向量(Vector)是一种动态数组,也称为可变长度数组或者可变数组。

它允许以类似于数组的方式存储多个元素,并且能够在运行时根据需要动态调整大小。

在Linux环境下,Vector是一种常用的数据结构,它提供了一些方便的函数和操作,使得向量的使用更加简单和高效。

在本文中,我们将详细介绍Linux C中向量的用法,包括向量的创建和初始化、向量的增加和删除元素、向量的遍历和访问元素等。

1. 向量的创建和初始化在使用向量之前,我们需要先创建一个向量变量,并对其进行初始化。

在Linux C环境中,我们可以使用下列代码来创建一个向量,并对其赋初值:#include <stdio.h>#include <stdlib.h>#include <stdarg.h>#include <stdint.h>#include <stdbool.h>#include <vector.h>int main() {vector_t* vec = vector_init(10, sizeof(int));if (vec == NULL) {printf("Vector initialization failed.\n");return -1;}...return 0;}在上述代码中,我们首先包含了必要的头文件,包括`stdio.h`, `stdlib.h`, `stdarg.h`, `stdint.h`, `stdbool.h` 以及`vector.h`。

然后,我们使用`vector_init` 函数创建了一个向量`vec`,并指定了向量的初始大小为10,并且向量中的元素类型为整数类型(`sizeof(int)` )。

最后,我们检查向量是否创建成功,若创建失败,则打印错误信息并返回-1,否则继续执行后续逻辑。

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

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

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

例如:// c语言风格int myHouse[100] ;// 采用vectorvector<int> vecMyHouse(100);当如上定义后,vecMyHouse就可以存放100个int型的数据了。

1. 它可以像普通数组一样访问eg: vecMyHouse[50] = 1024;2. 你可以顺序地向容器中填充数据eg:int i =0 ;for( ;i< 25; i++ ){vecMyHouse.push_back(1);}3. 它还可以动态地改变它的大小,通过下面这条语句实现// 将容器的大小改为400,这样容器中就可以容纳400个int型数据了eg:vecMyHouse.resize(400);4. 你也可以在容器中装入自定义的数据类型eg:// 自定义一个classclass Cmyclass{};// 定义一个存放class的容器vector<Cmyclass> vecMyHouse;5. 你可以在定义容器时为它赋初值// 定义一个容纳100个int型数据的容器,初值赋为0vector<int> vecMyHouse(100,0);6. 你可以把一个容器的对象赋值给另外一个容器eg:// 定义一个容纳100个int型数据的容器,初值赋为0vector<int> vecMyHouse(100,0);// 定义一个新的容器,内容与上述容器一样vector<int> myVec ;myVec = vecMyHouse;二、以上是vector容器的简单介绍,下面将详细介绍它的其他功能:1. 为了使用vector,必须在你的头文件中包含下面的代码:#include <vector>2. vector属于std命名域的,因此需要通过命名限定,可以在文件开头加上using std::vector;或者using namespace std;或者直接在使用vector的代码前加前缀eg:std::vector<int> myHouse;3. vector提供如下函数或操作:下面列举了部分常用的功能// 定义一个vectorstd::vector<int> 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() 返回指向容器最后一个元素的迭代器三、下面描述一下什么是迭代器迭代器相当于指针,例如:// 对于变量而言,使用指针指向对应的变量// 以后就可以使用* 加指针来操作该变量了int a = 10;int *p;p = &a;// 使用指针操作该变量eg:*p = 11; // 操作后a变为11// 对于容器,使用迭代器操作容器中对应位置的值// 当迭代器指向了容器中的某位置,则可以使用* 加迭代器操作该位置了// 定义一个vectorstd::vector<int> myVec;//添加10个元素for(int j =0 ; j<10 ; j++){myVec.push_back(j);}// 定义一个迭代器std::vector<int>::iterator p;// 指向容器的首个元素p = myVec.begin();// 移动到下一个元素p ++;// 修改该元素赋值*p = 20 ; //< 则myVec容器中的第二个值被修改为了20// 循环扫描迭代器,改变所有的值p = myVec.begin();for( ; p!= myVec.end(); p++ ){*p = 50;}以上简单讲述了vector的用法,仅供入门之用,谢谢。

------------------------------------------------------------------------------------- 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 ] << " "; //把每个元素显示出来}cont << 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;}这个reverse_iterator曾经搞得我头大,其对应的函数也是那么的可不理解...现在一切都好了. 对于left_null>1->2->3->4->right_null,这样一个有4个元素(1,2,3,4)的链表.1->2->3->4->尾list<int>iteraotr c1=intList.begin() // *c1=1;list<int>iteraotr c2=intList.end() // *c2=right_null;尾<-1<-2<-3<-4iterator++,则对于上边正向链表从左向右遍历EG1:*(--c2)=4;EG2:for(c1=.begin(),c1!=.end();c1++)cout<<...1,2,3,4list<int>reverse_iteraotr c1=intList.rbegin() // *c1=4; rbegin:相当于reverse_begin即反着看的头list<int>reverse_iteraotr c1=intList.rend() // *c1=left_null; rend相当于reverse_end即反着看的尾reverse_iterator++,则对于上边正向链表从右向左遍历.EG1:*(--c2)=1;EG2:for(c2=.rbegin();r2!=.rend();c2++)相当于:4 3 2 1for(c2=rend(),c2!=.rbegin().......)-->没有这种用法,因为不存在rend()指向的元素!!!本文来自CSDN博客,转载请标明出处:/zdl1016/archive/2007/03/01/1517955.aspx。

相关文档
最新文档