C++容器(随着刷leetcode不断补充)

一、vector(向量)

1、创建向量(初始化)

1.初始化向量
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的初始值

2、也可以用数组来初始化向量
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的初值

2、向量的基本操作


1>. a.size()                 //获取向量中的元素个数


2>. a.empty()                //判断向量是否为空


3>. a.clear()                //清空向量中的元素


4>. 复制
a = b ;            //将b向量复制到a向量中


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

6>. 插入 - insert
a.insert(a.begin(), 1000);            //将1000插入到向量a的起始位置前
a.insert(a.begin(), 3, 1000) ;        //将1000分别插入到向量元素位置的0-2处(共3个元素)
        
vector<int> a(5, 1) ;
vector<int> b(10) ;
b.insert(b.begin(), a.begin(), a.end());  //将a.begin(), a.end()之间的全部元素插入到b.begin()前

//末尾插入元素————这两个函数都是在末尾加元素
a.push_back()
a.emplace_back()

7>. 删除 - erase
b.erase(b.begin()) ;                     //将起始位置的元素删除
b.erase(b.begin(), b.begin()+3) ;        //将(b.begin(), b.begin()+3)之间的元素删除
c.pop_back                               //删除末尾的元素

8>. 交换 - swap
b.swap(a) ;            //a向量与b向量进行交换

3、遍历向量

for(num:nums)

{

}

二、队列

1、定义:

(1)队列中的数据元素遵循“先进先出”(First In First Out)的原则,简称FIFO结构;

(2)在队尾添加元素,在队头删除元素。

2、初始化

queue<int> q1;
queue<double> q2;

3、基本操作

q.empty()               如果队列为空返回true,否则返回false
q.size()                返回队列中元素的个数
q.pop()                 删除队列首元素但不返回其值
q.front()               返回队首元素的值,但不删除该元素
q.push()                在队尾压入新元素
q.emplace()               往队列中加入元素 #在leetcode中这个用的比上面那个多
q.back()                返回队列尾元素的值,但不删除该元素

3、set

set封装了二叉树

操作:

s.begin()       //  返回指向第一个元素的迭代器
s.clear()       //  清除所有元素
s.count()       //  返回某个值元素的个数
s.empty()       //  如果集合为空,返回true(真)
s.end()         //  返回指向最后一个元素之后的迭代器,不是最后一个元素
s.equal_range() //  返回集合中与给定值相等的上下限的两个迭代器
s.erase()       //  删除集合中的元素
s.find()        //  返回一个指向被查找到元素的迭代器
s.get_allocator()   //  返回集合的分配器
s.insert()      //  在集合中插入元素
s.lower_bound() //  返回指向大于(或等于)某值的第一个元素的迭代器
s.key_comp()    //  返回一个用于元素间值比较的函数
s.max_size()    //  返回集合能容纳的元素的最大限值
s.rbegin()      //  返回指向集合中最后一个元素的反向迭代器
s.rend()        //  返回指向集合中第一个元素的反向迭代器
s.size()        //  集合中元素的数目
s.swap()        //  交换两个集合变量
s.upper_bound() //  返回大于某个值元素的迭代器
s.value_comp()  //  返回一个用于比较元素间的值的函数

4、map

类似字典Key-Vaule

对于迭代器来说,可以修改实值,而不能修改key。

a、初始化

map<char , int> q;
//插入元素
q[a] = 1;
//等价于
q.insert(pair<char , int >('a' , 1))
 

b、基本操作

     begin()         返回指向map头部的迭代器

     clear()        删除所有元素

     count()         返回指定元素出现的次数

     empty()         如果map为空则返回true

     end()           返回指向map末尾的迭代器

     equal_range()   返回特殊条目的迭代器对

     erase()         删除一个元素

     find()          查找一个元素

     get_allocator() 返回map的配置器

     insert()        插入元素

     key_comp()      返回比较元素key的函数

     lower_bound()   返回键值>=给定元素的第一个位置

     max_size()      返回可以容纳的最大元素个数

     rbegin()        返回一个指向map尾部的逆向迭代器

     rend()          返回一个指向map头部的逆向迭代器

     size()          返回map中元素的个数

     swap()           交换两个map

     upper_bound()    返回键值>给定元素的第一个位置

     value_comp()     返回比较元素value的函数

6、pair

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值