首页 > 编程知识 正文

C语言有vector么,vector使用方法

时间:2023-05-04 01:40:17 阅读:55994 作者:2755

本文以c的向量用法为例。 请分享,仅供参考。 具体如下。

一.概述

vector是c标准模板库的一部分,是一个多功能的模板类和函数库,可以处理多个数据结构和算法。 向量是可以存储各种类型对象的容器。 简而言之,向量是可以存储任意类型的动态数组的容器,可以动态调整大小。

例如:

//c语言样式

int myHouse[100];

//采用载体

vectorvecmyhouse(100;

通过以上定义,vecMyHouse可以存储100个int类型的数据。

1 .可以像通常的排列那样访问

例如:

vecMyHouse[50]=1024;

2 .可以按顺序向容器中填充数据

例如:

int i=0;

for (; i 25; I )

{

VECmyhouse.push_back(1;

}

3 .也可以动态调整大小。 这通过以下语句实现

将容器大小调整为400,以便容器可以存储400个int类型的数据

例如:

vecmyhouse.resize(400;

4 .也可以在容器中包含自定义数据类型

例如:

自定义类

class Cmyclass

{

(;

定义盛放class的容器

vector vecMyHouse;

5 .定义容器时可以指定初始值

定义存储//100个int型数据的容器,使初始值为0

vectorvecmyhouse (100,0 );

6 .可以将一个容器中的对象指定给另一个容器

例如:

定义存储//100个int型数据的容器,使初始值为0

vectorvecmyhouse (100,0 );

//定义新容器,内容与上述容器相同

vector myVec;

myVec=vecMyHouse;

二、以上为vector容器简要介绍,以下详细介绍其他功能。

1 .要使用向量,头文件中必须包含以下代码:

#包含

2 .向量属于std命名域,需要命名限制,可以放在文件开头

using std:vector;

或者

用户命名空间STD;

或者,在使用向量的代码前面加前缀

例如:

std:vector myHouse;

3 .向量提供以下函数或操作:

部分常见功能如下

//定义向量

std:vector c;

可用功能:

c .删除c.clear ()容器中的所有数据。

c.empty ) )判断容器是否为空。

c .删除错误(pos ) pos位置的数据

c.erase(beg,end )删除[beg,end]区间数据

c.front ) )返回第一个数据。

c.insert(pos,elem )在pos的位置插入elem的副本

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

c.push_back(Elem )在末尾添加数据。

c .重新设置重置(num )容器的大小

c.size ) )返回到容器的实际数据数量。

c.begin ) )返回指向容器的第一个元素的迭代器

c.end ) )返回指向容器最后一个元素的迭代器

三.说明什么是迭代器

迭代器相当于指针。 示例:

//变量时,使用指针指向对应的变量

//稍后可以使用*指针操作该变量

int a=10;

int *p;

p=a;

使用指针操作变量

例如,*p=11; //操作时a为11

对于容器,请使用迭代器操作容器中相应位置的值

如果迭代器指向容器中的位置,则可以使用*迭代器操作该位置

//定义向量

std:vector myVec;

//添加10个元素

for(intj=0; j10; j )

{

>

myVec.push_back(j);

}

// 定义一个迭代器

std::vector::iterator p;

// 指向容器的首个元素

p = myVec.begin();

// 移动到下一个元素

p ++;

// 修改该元素赋值

*p = 20 ; //< 则myVec容器中的第二个值被修改为了20

// 循环扫描迭代器,改变所有的值

p = myVec.begin();

for( ; p!= myVec.end(); p++ )

{

*p = 50;

}

以上简单讲述了vector的用法,仅供入门之用,下面以实例形式继续加以说明。

1.vector 的数据的存入和输出:

#include

#include

#include

using namespace std;

void main()

{

int i = 0;

vector 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::iterator iter;

for( iter = v.begin(); iter != v.end(); iter++ )

{

cout << *iter << endl;

}

2. 对于二维vector的定义。1)定义一个10个vector元素,并对每个vector符值1-10。

#include

#include

#include

using namespace std;

void main()

{

int i = 0, j = 0;

//定义一个二维的动态数组,有10行,每一行是一个用一个vector存储这一行的数据。

//所以每一行的长度是可以变化的。之所以用到vector(0)是对vector初始化,否则不能对vector存入元素。

vector< vector > Array( 10, vector(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

#include

#include

using namespace std;

void main()

{

int i = 0, j = 0;

vector< vector > 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 arr;

arr.push_back(6);

arr.push_back(8);

arr.push_back(3);

arr.push_back(8);

for(vector::iterator it=arr.begin(); it!=arr.end(); )

{

if(* it == 8)

{

it = arr.erase(it);

}

else

{

++it;

}

}

cout << "After remove 8:n";

for(vector::iterator it = arr.begin(); it < arr.end(); ++it)

{

cout << * it << " ";

}

cout << endl;

}

希望本文所述实例对大家掌握C++中vector用法起到一定的帮助作用。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。