Vector的简单使用

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值