C++中的vector的使用

理论:

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

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

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

使用vector需要注意以下几点:

1、如果你要表示的向量长度较长(需要为向量内部保存很多数),容易导致内存泄漏,而且效率会很低;

2、Vector作为函数的参数或者返回值时,需要注意它的写法:

   double Distance(vector<int>&a, vector<int>&b) 其中的“&”绝对不能少!!!

实例:vector<int>test;

//建立一个vector,int为数组元素的数据类型,test为动态数组名

简单的使用方法如下:

vector<int>test;//建立一个vector

test.push_back(1);

test.push_back(2);//把1和2压入vector,这样test[0]就是1,test[1]就是2

vector<vector<Point2f> > points; //定义一个二维数组

points[0].size();  //指第一行的列数

基本操作

(1)头文件#include<vector>.

(2)创建vector对象,vector<int> vec;

(3)尾部插入数字:vec.push_back(a);

(4)使用下标访问元素,cout<<vec[0]<<endl;记住下标是从0开始的。

(5)使用迭代器访问元素.

vector<int>::iterator it;

for(it=vec.begin();it!=vec.end();it++)

    cout<<*it<<endl;

(6)插入元素:    vec.insert(vec.begin()+i,a);在第i+1个元素前面插入a;

(7)删除元素:    vec.erase(vec.begin()+2);删除第3个元素

vec.erase(vec.begin()+i,vec.end()+j);删除区间[i,j-1];区间从0开始

(8)向量大小:vec.size();

(9)清空:vec.clear();

特别提示:这里有begin()与end()函数、front()与back()的差别


举例:
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;
 }
}


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++,`vector`是一种动态数组,可以存储任意类型的数据。它提供了方便的插入、删除和查找操作,以及自动管理内存的功能。下面是使用`vector`的一些基本步骤: 1. 包含头文件:在使用`vector`之前,需要包含`<vector>`头文件。 ```cpp #include <vector> ``` 2. 声明变量:创建一个`vector`对象,指定其大小。 ```cpp std::vector<int> myVector(10); // 创建一个大小为10的整数vector ``` 或者 ```cpp std::vector<std::string> myVector; // 创建一个空的字符串vector ``` 3. 插入元素使用`push_back()`函数向`vector`添加元素。可以使用循环语句插入多个元素。 ```cpp myVector.push_back(1); // 向vector添加一个元素 myVector.push_back(2); // 再添加一个元素 // ... ``` 4. 访问元素使用索引访问`vector`元素。可以使用下标运算符`[]`或`.at()`函数来访问元素。 ```cpp int firstElement = myVector; // 访问第一个元素 std::string secondElement = myVector.at(1); // 访问第二个元素(注意:如果索引超出范围,会触发异常) ``` 5. 修改元素:可以使用赋值运算符修改`vector`元素。 ```cpp myVector = 3; // 修改第一个元素为3 ``` 6. 删除元素使用`erase()`函数删除`vector`元素。可以使用循环语句删除多个元素。 ```cpp myVector.erase(myVector.begin() + 1); // 删除第二个元素(注意:要确保索引不超出范围) ``` 7. 迭代器遍历:可以使用迭代器遍历`vector`元素。 ```cpp std::vector<int>::iterator it; for (it = myVector.begin(); it != myVector.end(); ++it) { std::cout << *it << std::endl; // 输出每个元素的值 } ``` 8. 大小和容量:可以使用成员函数`size()`和`capacity()`来获取`vector`的大小和容量。还可以使用成员函数`reserve()`来预先分配足够的内存空间。 这些是使用C++的`vector`的基本步骤。通过这些操作,可以方便地管理动态数组,并在程序灵活使用

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值