vector用法速览

vector 可以理解为“变长数组”,即vector会根据长度需要而自动改变。

vector容器内元素的访问
常见的就是begin()和end()
begin()函数的作用为取vector的首元素地址,
而end()并不是取vector的尾元素地址,而是取尾元素地址的下一个地址,不存储任何元素。
因此vector的遍历可以写成如下:
for(vector<int>::iterator it = vi.begin(); it != vi.end(); it++){
        printf("%d ", *it);
}

vector的常用函数:
1.push_back()
顾名思义,push_back(i)就是在vector后面加一个元素i,时间复杂度为O(1)。
2.pop_back()
有添加就会有删除,pop_back()用于删除vector的尾元素,时间复杂度为O(1)。
3.size()
size()用来获得vector中元素的个数,时间复杂度为O(1)。
4.clear()
clear()用于清空vector中所有的元素,时间复杂度为O(N):vi.clear();
5.insert()
insert(it, x)用来向vector的任意一个迭代器it处插入一个元素x,也就是在it位置之前插入,时间复杂度为O(N)。
std::vector<int> demo{1,2};
demo.insert(demo.begin(),3);//{3,1,2}
6.erase()
erase()有两种用法:删除单个元素,删除一个区间内的所有元素。时间复杂度均为O(N)。
删除单个元素:
erase(it)即为删除迭代器为it处的元素:vi.erase(vi.begin() + 2);
删除一个区间内的所有元素:
erase(first, last)即删除[first, last)内的所有元素:vi.erase(vi.begin() + 2, vi.begin() + 4);

pair保存两个数据成员,第一个成员是first,第二个成员是second
常见用法:
make_pair(v1,v2);    返回一个用v1和v2初始化的pair,pair的类型从v1和v2的类型推断出来
p.first;    返回p的first数据成员
p.second;    返回p的second数据成员

map是C++标准库提供的关联容器之一,保存的是键值对(key-value),我们可以通过key快速查找到其对应的value。map底层使用的数据结构是红黑树,因此在map中查找、添加或删除元素时间复杂度都是O(log(n))。此外,map中的元素还是有序的。
访问元素
T2 value = m1[key];    得到关键字key对应的值value
m1.begin();    获取指向m1首元素的迭代器
m1.end();    获取指向m1尾元素的后一个位置的迭代器
添加、修改元素
m1.insert(p1);    在map中插入已有的pair
m1.insert(make_pair("sc0303", "小王"));  
m1[key] = value;    如果key不存在则插入该键值对,如果key已存在则修改该key对应的value
删除元素
m1.erase(key)    删除关键字为key的元素
m1.clear();    删除m1中的所有元素
查找
m1.find(key)    返回一个迭代器,指向第一个关键字为key的元素,若key不在容器中,则返回尾后迭代器
m1.count(key);    返回关键字等于key的元素的数量。对于不允许重复关键字的容器map,返回的值是0或1

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值