C++ 之vector的使用

9 篇文章 0 订阅
5 篇文章 0 订阅

vector 是向量类型,它可以容纳许多类型的数据,如若干个整数,所以称其为容器。
使用之前现包含头文件

#include <vector>

1 初始化的方式

语法:

  vector();
  vector( size_type num, const TYPE &val );
  vector( const vector &from );
  vector( input_iterator start, input_iterator end );
/* 初始化 */
vector<int> a(10); //定义了10个整形元素(尖括号内中为元素类型名,它可以是任何合法的数据类型),并且没有给出初值
vector<int> b(10, 2); //定义了10个整形元素的向量,并且每个元素的初值为1
vector<int> c(b); //用b向量来创建c,整体复制性赋值
vector<int> d(b.begin(), b.begin()+3);  //定义了d值为b中的第0个到第2个(共3个)元素
int e[7]={1,2,3,4,5,6,7};
vector<int> f(e, e+7); //从数组中获得初值

2 assign函数

语法:

  void assign( input_iterator start, input_iterator end );
  void assign( size_type num, const TYPE &val );

assign() 函数要么将区间[start, end)的元素赋到当前vector,或者赋num个值为val的元素到vector中.这个函数将会清除掉为vector赋值以前的内容.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
    /* 初始化 */
    vector<int> a(10); //定义了10个整形元素(尖括号内中为元素类型名,它可以是任何合法的数据类型),并且没有给出初值
    vector<int> b(10, 2); //定义了10个整形元素的向量,并且每个元素的初值为1
    /*打印 a的大小 */
    std::cout<<"未赋值前a的大小为 "<< a.size() <<std::endl;
    std::cout<<"直接赋值"<<std::endl;
    a.assign(9, 1);
    for (auto i = a.begin(); i != a.end(); i++) {
        std::cout << *i << ' ';
    }
    std::cout<<std::endl;
    std::cout<<"直接赋值后a的大小为 "<<a.size()<<std::endl;
    std::cout<<std::endl;
    std::cout<<"将b的值赋值给a"<<std::endl;
    a.assign(b.begin(), b.begin() + 4); //将b的0~3共四个元素赋值给a
    for (auto i = a.begin(); i != a.end(); i++) {
        std::cout << *i << ' ';
    }
    std::cout<<std::endl;
    std::cout<<"通过b赋值后a的大小为 "<< a.size() <<std::endl;

}

![在这里插入图片描述](https://img-blog.csdnimg.cn/1510bb8c83ac4064949dd03a6552b938.png

3 at函数

语法: 
  TYPE at( size_type loc );

at() 函数 返回当前Vector指定位置loc的元素的引用. at() 函数 比 [] 运算符更加安全, 因为它不会让你去访问到Vector内越界的元素.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
    /* 初始化 */
    vector<int> a(10); //定义了10个整形元素(尖括号内中为元素类型名,它可以是任何合法的数据类型),并且没有给出初值
    vector<int> b(10, 2); //定义了10个整形元素的向量,并且每个元素的初值为1
    a.assign(10, 1);
    for(int i = 0; i<15; i++){
        cout<<"元素" <<i<<" = " <<a.at(i)<<endl;
    }

}

在这里插入图片描述
取代试图访问内存里非法值的作法,at() 函数能够辨别出访问是否越界并在越界的时候抛出一个异常.

4 back 函数

语法: 
  TYPE back();

back() 函数返回当前vector最末一个元素的引用

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
    /* 初始化 */
    vector<int> a(10); //定义了10个整形元素(尖括号内中为元素类型名,它可以是任何合法的数据类型),并且没有给出初值
    for( int i = 0; i < 10; i++ ) {
      /* 将i添加到a的末尾 */
      a.push_back(i);
    }

    cout<<"第一个元素是 "<<a.front()<<"  最后一个元素是 "<<a.back()<<endl;

}

在这里插入图片描述

5 begin 函数 和 end 函数

语法: 
  iterator begin();

begin()函数返回一个指向当前vector起始元素的迭代器.例如,下面这段使用了一个迭代器来显示出vector中的所有元素。

语法: 
  iterator end();

end() 函数返回一个指向当前vector末尾元素的下一位置的迭代器.注意,如果你要访问末尾元素,需要先将此迭代器自减1.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(int argc, char *argv[])
{
    /* 初始化 */
    vector<int> a(10, 789); //定义了10个整形元素(尖括号内中为元素类型名,它可以是任何合法的数据类型),并且没有给出初值
    vector<int>::iterator it;
    for( int i = 0; i < 10; i++ ) {
       /* 将i添加到a的末尾 */
      a.push_back(i);
    }

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

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值