C++ 容器详解

本文详细介绍了C++中的四种容器:vector、set、multiset、map和multimap。vector允许动态调整大小,方便操作。set和multiset自动按键值排序,不允许(或允许)重复键值。map和multimap提供一对一的数据存储,map插入会覆盖已有键值,multimap允许插入重复键值。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vector、set、multiset、map和multimap

一:vector

在使用它时, 需要包含头文件 #include<vector>
vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所要放入的元素。此外, vector 也提供了许多的方法来对自身进行操作

二、向量的声明及初始化
    vector 型变量的声明以及初始化的形式也有许多, 常用的有以下几种形式

 

        vector<int> a ;                                //声明一个int型向量a
        vector<int> a(10) ;                            //声明一个初始大小为10的向量
        vector<int> a(10, 1) ;                         //声明一个初始大小为10且初始值都为1的向量
        vector<int> b(a) ;                             //声明并用向量a初始化向量b
        vector<int> b(a.begin(), a.begin()+3) ;        //将a向量中从第0个到第2个(共3个)作为向量b的初始值

 

        int n[] = {1, 2, 3, 4, 5} ;
        vector<int> a(n, n+5) ;              //将数组n的前5个元素作为向量a的初值
        vector<int> a(&n[1], &n[4]) ;        //将n[1] - n[4]范围内的元素作为向量a的初值
        
三、元素的输入及访问
    元素的输入和访问可以像操作普通的数组那样, 用cin>>进行输入, cout<<a[n]这样进行输出:
    示例:

 

 

      #include<iostream>
      #include<vector>
  
      using namespace std ;
  
      int main()
      {
          vector<int> a(10, 0) ;      //大小为10初值为0的向量a
  
         //对其中部分元素进行输入
         cin >>a[2] ;
         cin >>a[5] ;
         cin >>a[6] ;
 
         //全部输出
         int i ;
         for(i=0; i<a.size(); i++)
             cout<<a[i]<<" " ;
 
         return 0 ;
     }

 

 

    //全部输出
    vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

四、向量的基本操作
a.size()                 //获取向量中的元素个数
a.empty()                //判断向量是否为空
a.clear()                //清空向量中的元素
a = b ;                 //将b向量复制到a向量中
b.swap(a) ;            //a向量与b向量进行交换

比较
    保持 ==、!=、>、>=、<、<= 的惯有含义 ;
    如: a == b ;    //a向量与b向量比较, 相等则返回1


插入 - insert
     a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
        
     a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
        
     b.insert(b.begin(), a.begin(), a.end()) ;    //将a.begin(), a.end()之间的全部元素插入 
                                                    到b.begin()前
删除 - erase
     b.erase(b.begin()) ;               
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值