<span style="font-family: Arial; ">在此总结一下模板vector的使用介绍</span>

标准库vector类型使用需要的头文件:#include <vector>。vector 是一个类模板。不是一种数据类型,vector<int>是一种数据类型。它比数组更加方便使用。

一、
vector定义和初始化

  • vector< 类型 > 标识符(最大容量,初始所有值);例如 vector<int> vi(10,2)      //有十个元素,初始值都是2
  • vector< typeName > vi(n); //vi含有n个值为0的元素  例如 vector<int> vi(10)    //有十个元素,初始值都是该容器的默认值,整形是0
  • vector<typeName>v2(v1);
    或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());//v2是v1的一个副本
  • vector<
    typeName > v1;       //默认v1为空,
  • int
    a[4]={0,1,2,3}; vector<int> v5(a,a+5);//v5的size为5,v5被初始化为a的5个值。后一个指针要指向将被拷贝的末元素的下一位置。
  • 还有一种较为特殊,列表初始化(使用中括号来初始化)
     vector<int> v{10};     //模板只有一个元素,初始值为10,此种方法一定要和值初始化(使用圆括号初始化分别开),此定义模板方法在只有C++11的规则下才可以

二、vector中压入元素,输出元素操作

我们可以在程序运行时压入元素,此时我们要使用  push_back()语句

  • vector<string> str;

    string text;

    while(cin>>text)

    {

    str.push_back(text);

    }  //各元素之间以空白字符为间隔(制表符,空格,回车 都是空白字符)
  • 压入元素后我们就要输出它,此时我们可以利用C++迭代器来一次遍历的输出它

(1)vector<int> vi;

for(int i=0;i<100;i++)

             vi.push_back(i);    //压入一百个与元素

auto i=vi.size();            //size(),返回模板中元素的个数 (下面三.3有解释)

cout<<i<<endl;

for(auto b=vi.begin();b<vi.end();b++)     //使用C++迭代器

    cout<<*b<<endl;

(2)我们还可以使用下标来输出,例如

for(int i=0;i<vi.size();i++)  //使用下标输出

cout<<vi[i]<<endl;

三  对vector操作的一些函数

  1. v[n]           返回v中位置为n的元素
  2. v.empty()    
    判断vector是否为空
  3. v.size()       
    返回容器中数据的个数,size返回相应vector类定义的size_type的值。我们可以使用auto类型,从而不必担心我们定义的类型(上面程序有演示)
  4. v.pop_back()   
    删除容器的末元素,并不返回该元素。
  5. v.push_back(t)   
    在容器的最后添加一个值为t的数据,容器的size变大。
  6. v.erase(pointer1,pointer2)
    删除pointer1到pointer2中间(包括pointer1所指)的元素。
  7. v.resize(2*v.size,
    10) 将v的容量翻2倍(并把新元素的值初始化为10)
  8. v1==v2         
    判断v1与v2是否相等。!=、<、<=、>、>=      保持这些操作符惯有含义(使用的逻辑和普通的一样,我们可以对比C++string)
  9. v.clear()     
    删除容器中的所有元素。
      下面根据以上的函数,编写一个程序当用例,使用起来更加清晰
      
#include<iostream>
#include<string>
#include<vector>
#include<cctype>
using namespace std;
int main()
{ vector<int> vi;
for(int i=0;i<20;i++)
vi.push_back(i); //压入元素。向模板的底端 decltype(vi.size()) size=vi.size();
//使用decltype 定义一个与vi.size()类型一样的变量 ,模板中对象的个数
cout<<"the vector's capacity is"<<size<<endl; vi.pop_back(); //删除容器中最后一个元素 19
for(auto i=vi.begin();i!=vi.end();i++) //输出模板中的元素
cout<<*i<<endl;
for(int i=0;i<19;i++) //使用下标输出
cout<<vi[i]<<endl; vi.resize(vi.size()*2,12);//长度变成两倍,并主动为后增加的赋值为12
cout<<"NOW the vector's capacity is"<<vi.size()<<endl;
for(auto i=vi.begin();i!=vi.end();i++)
cout<<*i<<endl; vi.clear(); // 删除容器中的所有元素
cout<<"After clear , the vector's capacity is"<<vi.size()<<endl; //使用C++迭代器类型遍历每一个元素
vector<string> s(10,"hello");
vector<string>::iterator i;
for(i=s.begin();i!=s.end();i++)
cout<<*i<<endl;
s.pop_back(); //删除容器中最后一个元素
cout<<"After pop_back , the vector's capacity is"<<s.size()<<endl; return 0; }

以上部分结果截图如下









 关于vector的迭代器类型
  1. 每种容器类型都定义了自己的迭代器类型,如vector:

    vector<int>::iterator iter;这条语句定义了一个名为iter的变量,它的数据类型是由vector<int>定义的iterator类型。
  2. 使用迭代器读取vector中的每一个元素:

    vector<int> ivec(10,1);

    for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter)

    {

       cout<<*iter<<endl;; //使用 * 访问迭代器所指向的元素

    }
          我们可以定义vector<int>::iterator,同时我么也可以定以如下
vector<int>:: const_iterator ,只能读取容器中的元素,而不能修改。
iterator除了进行++,--操作,可以将iter+n,iter-n赋给一个新的iteraor对象。还可以使用一个iterator减去另外一个iterator.

const vector<int>::iterator newiter=ivec.begin();

vector<int>::iterator newiter2=ivec.end();

cout<<"\n"<<newiter2-newiter; 

一个完整的程序
1 #include <vector>
2 #include <iostream>
3
4 using namespace std;
5
6 int main() {
7 vector<int> ivec;
8 ivec.push_back(1);
9 ivec.push_back(2);
10 ivec.push_back(3);
11 ivec.push_back(4);
12
13 for(vector<int>::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter)
14 cout << *iter << endl;
15 }


以上是vector的一些使用的知识点,希望对大家有用


C++ vector介绍的更多相关文章

  1. C++ 中的std::vector介绍(转)

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...

  2. std::vector介绍

    vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vec ...

  3. paper 5:支持向量机系列二: Support Vector —— 介绍支持向量机目标函数的 dual 优化推导,并得出“支持向量”的概念。

    paper 4中介绍了支持向量机,结果说到 Maximum Margin Classifier ,到最后都没有说“支持向量”到底是什么东西.不妨回忆一下上次最后一张图: 可以看到两个支撑着中间的 ga ...

  4. vector 介绍

    介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if()和for_each()中的使用.通 ...

  5. C++ stl vector介绍

    转自: STL vector用法介绍 介绍 这篇文章的目的是为了介绍std::vector,如何恰当地使用它们的成员函数等操作.本文中还讨论了条件函数和函数指针在迭代算法中使用,如在remove_if ...

  6. vector介绍

    vector(向量,也可称为容器): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组,当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的. 1.1  ...

  7. java集合系列——List集合之Vector介绍(四)

    1. Vector的简介 JDK1.7.0_79版本 Vector 类可以实现可增长的对象数组.与数组一样,它包含可以使用整数索引进行访问的组件.但是,Vector 的大小可以根据需要增大或缩小,以适 ...

  8. Collections.synchronizedList 、CopyOnWriteArrayList、Vector介绍、源码浅析与性能对比

    ## ArrayList线程安全问题 众所周知,`ArrayList`不是线程安全的,在并发场景使用`ArrayList`可能会导致add内容为null,迭代时并发修改list内容抛`Concurre ...

  9. Java 集合系列06之 Vector详细介绍(源码解析)和使用示例

    概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vec ...

随机推荐

  1. 用python3统计代码行数

    今天接到一个电话面试,对方问我在一个项目中维护了多少行代码. 我懵逼了,从来没有统计过啊,怎么还会有这种需求? 当时一脸茫然的想了想,回答了一个,呃...差不多两千多行吧...感觉很心虚 挂完电话之后 ...

  2. markdown语法学习源码

    __注: 结合markdown官方文档 其中大部分例子和说明文字都摘自官方文档__官方链接:[Markdown: Basics (快速入门)](http://wowubuntu.com/markdow ...

  3. 设备版本,设备号,APP版本,APP名称获取

    //获取设备id号 UIDevice *device = [UIDevice currentDevice];//创建设备对象 NSString *deviceUID = [[NSString allo ...

  4. JavaScript的匿名函数和模块化的使用方法

    对于开发人员来说,很多时候我们都会涉及到JavaScript的使用,而在使用过程中,最令人沮丧的就是变量没有相应的使用范围. 在开发中,对于任何变量.数组.函数.对象等,只要不在函数的内部,都会被默认 ...

  5. Windows下WEB服务器的选择与搭建

    本文主要基于支持perl的web服务器的选择. 一直基于web开发,服务器都是linux下使用webmin搭建的,惭愧的说一句,这么多年,也好好研究过WEB服务器,单从这个角度,是不是可以反应出web ...

  6. jquery导航二级栏目下拉

    <div class="Nav_L L"> <ul> <li><a href="" title="" ...

  7. Dynamic Web Project创建及版本修改的问题

    java项目中,若切换服务器,经常会涉及到动态web模块版本的问题.      比如:新建了web项目,开始使用tomcat服务器,但是后来使用jboss服务器,就会出现:Project facet ...

  8. PHP empty函数报错的解决办法

    PHP empty函数在检测一个非变量情况下报错的解决办法. PHP开发时,当你使用empty检查一个函数返回的结果时会报错:Fatal error: Can't use function retur ...

  9. C++文件操作(输入输出、格式控制、文件打开模式、测试流状态、二进制读写)

    1.向文件写数据 头文件#include <ofstream> ①Create an instance of ofstream(创建ofstream实例) ②Open the file w ...

  10. python2.7抓取豆瓣电影top250

    利用python2.7抓取豆瓣电影top250 1.任务说明 抓取top100电影名称 依次打印输出 2.网页解析 要进行网络爬虫,利用工具(如浏览器)查看网页HTML文件的相关内容是很有必要,我使用 ...