vector动态数组

vector是STL模板库中的序列式容器,利用它可以有效地避免空间的浪费。

创建vector容器

vector< int >v;vector< char >;vector< int >v[10]。

vector常用函数及功能

c.clear() 清空容器中所有元素

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

c.pop_back() 删除容器最后一个元素

c.push_back() 在尾部加入一个元素

c.resize() 重新指定容器的长度

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

c1.swap(c2) 交换c1和c2的值

swap(c1,c2) 同上

使用vector容器注意

vector<int>v,v相当于一个一维数组,长度不定,需注意如果当前数组v的长度为n,不可像普通数组一样写成v[n]=x,这样做是毫无意义的,但是如果在n以内,可以直接写做v[m]=x (m < n)。

在这里我要特别说一下resize()函数,先看下面的代码和输出

// resizing vector
#include <iostream>
#include <vector>
using namespace std;
int main ()
{
  vector<int> myvector;

  // set some initial content:
  for (int i=1;i<10;i++) myvector.push_back(i);

  myvector.resize(5);
  myvector.resize(8,100);
  myvector.resize(12);

  cout << "myvector contains:";
  for (int i=0;i<myvector.size();i++)
    cout << ' ' << myvector[i];
  cout << '\n';

  return 0;
} 

Output:
myvector contains: 1 2 3 4 5 100 100 100 0 0 0 0

从这里可以很明显的看出,如果利用resize()函数减少容器的长度,很简单直接把想要保留的长度作为参数传给它,如果增加长度x,执行c.resize(n+x,a),那么新增加部分的数组的值为a,但是如果不传第二个参数给它,就会默认为0。

其他函数我就在代码中为大家展示它的功能。测试代码如下

#include<iostream>
#include<vector>
using namespace std;
int main()
{
    vector<int>p;
    for(int i=0;i<10;i++)
    p.push_back(i);

    swap(p[2],p[1]);
    for(int i=0;i<p.size();i++)
    cout<<p[i]<<" ";
    cout<<endl;

    p.resize(7);
    for(int i=0;i<p.size();i++)
    cout<<p[i]<<" ";
    cout<<endl;

    while(!p.empty())
    {
        p.pop_back();
    }
    p.clear();
    cout<<p.size()<<endl;

    return 0;
} 

如有不当之处欢迎指出!!

上一篇:C#中常用的读取xml的几种方法(转)


下一篇:Linux(Centos)配置vsftp使用账号密码(虚拟用户)登录ftp进行文件上传和修改