C++容器之vector map set 增加元素

  说到C++的容器,我想第一个问题就是什么是容器,为什么要使用容器,若真非要用容器,那怎么使用呢?能想到这些问题,至少证明大家都有很强的探究精神。

目录:


何为容器?又为何需要容器

  首先,学过C语言肯定知道咱们数据结构从物理结构上来说主要是:顺序存储和链式存储。但是,为了很好的利用红黑树结构,我们主要引入了关联容器。关联容器的特点是,一定有一个键和值相对应,有可能是唯一对应的,那么就是我们的map和set,不允许有重复的记录;也可以不唯一,有multimapmultiset
- 斜体 Ctrl + I

容器之增加元素

1、vector增加元素

vector的增加可以有insertpush_back两种:
  iterator insert(iterator loc, const TYPE &val);
  在指定位置loc 前 插入值val的元素,返回指向这个元素的迭代器

  void insert(iterator loc, size_type num, const TYPE &val);
  在指定位置loc 前 插入num个值为val的元素

  void insert(iterator loc,input_iterator start,input_iterator end);
  在指定位置loc 插入区间[start ,end)的所有元素,其中,start和end也可以是数组和指针
  

2、map增加元素

map的增加有三种方法:
  ①insert函数插入pair数据
  ②insert函数插入value_type数据
  ③数组方式插入数据
其中,只有以数组方式插入,可以覆盖以前key所对应的value值;但前两者可以通过返回值判断是否插入成功,①和②的返回值类型为:pair<map<int,string>::iterator,bool>

3、set增加元素

(1) 插入vaule,且不能和set容器内元素重复,返回pair对
pair<iterator,bool> insert(value);

(2)在pos位置之 插入,返回新元素位置,但不一定插入成功
iterator insert(iterator pos, value);
  若插入不成功,依然返回一个游标,但是不属于set容器。
  
(3)在迭代区间[first,last)内所有的元素,插入到set容器
void insert(iterator first, iterator last);

小结

  从上面的的不同增加方式来看,vector的增加和插入位置有关,而map和set因为插入后会重新排序,所以一般支持直接插入。
  

代码块

实现代码如下:

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
//自定义打印函数
void print(vector<int> v)
{

    for_each(v.begin(),v.end(),p);
    cout << endl;
}
//主函数
int main(int argc, char *argv[])
{
    vector<int> iv;
    int b[] = {11,12,13};

    iv.insert(iv.end(),5);     //vector插入方法1
    print(iv);

    iv.insert(iv.begin(),6,6); //vector插入方法2
    print(iv);

    iv.insert(iv.end(),b,b+2);   //vector插入方法3
    print(iv);

    return 0;
}
>>> 5
6 6 6 6 6 6 5
6 6 6 6 6 6 5 11 12

[1]:徐晓鑫 《后台开发核心技术与应用实践》
[2]:Stephen Prata 《C++ Primer Plus》

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值