C++中向量的基础知识

向量(vectors)

    Vector是向量类型,是一种对象实体,使用它时,只要加上头文件<vector>即可。

    Vector可以有四种定义方式:

        (1)vector<int> a(10);

        (2)Vector<int>b(10,1);

        (3)Vector<int>c(b);

        (4)Vector<int>d(b.begin(),b.begin()+3)

    Vector<int>是模板形式,其中尖括号内可以是任何合法的数据类型,在此表示一个整数向量,

    (1)定义了十个整数元素的向量,但没有给出初值,所以其值是不确定的

    (2)定义了十个整数元素的向量,且每个元素初值是1,和明显这种定义方式远远优于数组

    (3)是用另一个现成的向量来创建一个向量

    (4)定义了其值依次为b向量的第0个到第2个(共3个)元素的向量

    因此,向量可以选择另一个向量的一部分进行复制。

    特别的,向量还可以从数组获得初值,例如:

int  a[7]={1,2,3,4,5,6,7};

Vector<int> va(a,a+7);

    上面第四种形式的b.begin()和b.end()表示向量起始元素的位置和最后一个向量元素之外的位置,向量元素位置也属于一种类型,称为遍历器,遍历器不单表示元素位置,还可以在容器中前后挪动。每种容器都有对应的遍历器,向量的遍历器类型为vector<int>::iterator。

    因此,输出向量的元素有两种方式,

        for(int i=0;i<a.size;i++)     第一种

        cout<<a[i]<<”  ”;

        for(vector<int> it=a.begin();it!=a.end();it++)    第二种

        cout<<*it<<”  ”;

    a.begin()表示向量的第一个元素,这种方式称为一个对象捆绑一个函数调用,表示对该对象进行某种操作,类似这样的使用方式称为调用对象a的成员函数,这种方式在对象程序设计中很普遍,向量中的操作都是通过成员函数完成的。

    它的常用操作有

        a.assign(b.begin(),b.begin()+3);                //将向量b的0-2元素构成向量赋值给a

        a.assign(4,2);                                      //使a向量只含0-3元素,且均赋值2

        Int x=a.back();                                      //将向量a的最后一个元素赋值给整数x

        a.clear();                                             //将向量a清空

        If(a.empty())cout<<”empty”;                   //a.empty()常用作判断条件,它判断向量空否

        int y=a.front();                                   //将a的第一个元素赋值给y

        a.pop_back();                                      //删除最后一个元素

        a.push_back(10);                                 //在向量最后插入一个元素,其值为10

        a.resize(10);                                      //将向量元素调至10个元素,多则删,少则补,其值不确定

        a.resize(10,2);                                   //将向量元素调至10个,多则删,少则补,其值为2

        if(a==b)cout<<”equal”;                       //向量可以比较,!=,<等。

//========================================================
//判断yy.txt中有多少对两两相等的整数(yy.txt中有若干个整数)
//========================================================
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int main()
{
ifstream in("yy.txt");
vector<int> v;
for(int a;in>>a;)
v.push_back(a);
int pair=0;
for(int i=0;i<v.size()-1;i++)
for(int j=i+1;j<v.size();j++)
if(v[i]==v[j])
pair++;
cout<<pair<<endl;


}

转载于:https://my.oschina.net/u/574191/blog/101652

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值