Vector的简单使用

来源:互联网 发布:女士斜挎包 淘宝 编辑:程序博客网 时间:2024/05/09 00:14

vector的简单介绍:

c++中的一种数据结构顺序容器,确切的说是一个类,相当于一个动态数组,数组的类型由自己定义,并且可以在数组进行各种操作。当程序员无法知道自己需要的数组的规模有多大时,可以用其来解决问题已达到最大节约空间的目的。

与数组的区别:

1.数组的定义必须定义数组的元素个数;但是vector不需要。

2.数组定义后空间固定,不能改变;而vector则灵活的多,空间可以进行可加可减。

3.vector可以进行一系列的函数操作,比如插入新元素,还有数组不能用一个存在的数组去创建一个新数组或者赋值,而vector由于是又类创建内部实现很多函数,因此这些功能均可以实现。。。

使用方法:

1.创建格式:vector<数据类型> 对象名;

例如:创建一个名为a的全是整型元素的容器:
vectot a;

迭代器

容器里除了使用下标来访问vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型。

例如:

vector::iterator it;

这条语句定义了一个名为it的变量,它的数据类型是由vector定义的iterator类型。(实际相当一个指针)

提供基本操作:

1.begin()和endl()

vector ::iterator iter=vt.begin();//起始地址

vector ::iterator iter_end=vt.end();//结束地址

在遍历时一个for循环就可遍历出所有元素:

    for ( it = a.begin(); it < a.end(); it++)    {        cout << " " << *it;    }

2.rbegin() 返回一个逆序迭代器,它指向容器c的最后一个元素;

rend() 返回一个逆序迭代器,它指向容器c的第一个元素前面的位置

3.size—–容器当前有多少个元素;

4.capacity——-vector对象最多能容纳多少个元素;

5.max_size——指的是一个vector结构可供储存元素的个数的上线,通常是由于寻址空间决定的。

6.resize(n),一般是用来改变容器的大小,使其包含n个元素。如果n小于当前容器的尺寸较小,内容调减至其前n个元素,并把多余出来的元素销毁掉。

7.empty()判断容器为空,返回向量是否容器是空的,即无论其大小为0。

例如:

#include <iostream>#include <vector>using namespace std;int main (){  vector<int> myvector;  int sum (0);  for (int i=1;i<=10;i++) myvector.push_back(i);  while (!myvector.empty())  {     sum += myvector.back();     myvector.pop_back();  }  cout << "total: " << sum << endl;  return 0;}

输出 :total:55

8.swap()交换两个容器

例如:

int main(){    unsigned int i;    vector<int> first(3, 100);   // three ints with a value of 100    vector<int> second(5, 200);  // five ints with a value of 200    first.swap(second);    cout << "first contains:" << endl;    for (i = 0; i < first.size(); i++) cout << " " << first[i] << endl;    cout << "\nsecond contains:" << endl;    for (i = 0; i < second.size(); i++) cout << " " << second[i] << endl;    system("pause");    return 0;}

输出:

first contains: 200 200 200 200 200

second contains: 100 100 100

9.at—-通常来说,假设v是一个vector对象,则v.at(n)和v[n]是一样的,只不过前者会检查是否越界(因此花费的时间稍多),而后者不会(后者越界会导致未定义行为

int main(){    vector <int> myvector(10);   // 10 zero-initialized ints    unsigned int i;    for (i = 0; i < myvector.size(); i++)    {        myvector.at(i) = i;    }    cout << "myvector contains:";    for (i = 0; i < myvector.size(); i++)    {        cout << " " << myvector.at(i) << endl;    }    system("pause");    return 0;}

输出:0、1、2、3、4、5、6、7、8、9

待改善。。。

0 0
原创粉丝点击