C++ Vector用法

1.vector介绍:

      vectorC++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库。vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。

2.vector函数:

 

c.assign(beg,end)
[beg; end)区间中的数据赋值给c

c.assign(n,elem)
nelem的拷贝赋值给c

c.at(idx)
传回索引idx所指的数据,如果idx越界,抛出out_of_range

c.back()
传回最后一个数据,不检查这个数据是否存在。

c.begin()
传回迭代器中的一个数据。

c.capacity()
返回容器中数据个数。

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

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

c.end()
指向迭代器中的最后一个数据地址。

c.erase(pos)
删除pos位置的数据,传回下一个数据的位置。

c.erase(beg,end)
删除[beg,end)区间的数据,传回下一个数据的位置。

c.front()
传回地一个数据。

get_allocator
使用构造函数返回一个拷贝。

c.insert(pos,elem)
pos位置插入一个elem拷贝,传回新数据位置。

c.insert(pos,n,elem)
pos位置插入nelem数据。无返回值。

c.insert(pos,beg,end)
pos位置插入在[beg,end)区间的数据。无返回值。

c.max_size()
返回容器中最大数据的数量。

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

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

c.rbegin()
传回一个逆向队列的第一个数据。

c.rend()
传回一个逆向队列的最后一个数据的下一个位置。

c.resize(num)
重新指定队列的长度。

c.reserve()
保留适当的容量。

c.size()
返回容器中实际数据的个数。

c1.swap(c2)   swap(c1,c2)
c1c2元素互换。

3.vector简单应用

 

 

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;
}
}  

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值