C++学习(五)

本文深入探讨了C++中包括unordered_map、vector、list、set、map等容器的使用方法,以及iterator迭代器的原理与应用。同时,介绍了纯虚拟函数的作用、STL中的remove与erase函数的区别,并演示了next_permutation与prev_permutation函数如何实现数组的全排列。内容覆盖了C++基础容器的使用、数据结构操作和算法应用。

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

1.#include<tr1/unordered_map>库中有许多类似于Java中hash map功能的容器,可以用来存放数据等

2.iterator相当于一个迭代器,计数器,其声明如:

vector<int>::iterator d;

*d:取元素; ++d,--d:移动位置;

当然,其还可以进行一些比较运算符,iterator相当于一个指针,搭配容器使用,因为一些容器如list不能通过下标来访问元素,所以引进了iterator

3.纯虚拟函数的作用:防止基类定义对象,因为此时基类为抽象类

4.容器不管在哪种语言里都有着至关重要的作用,C++中的容器类有vector,list,set,map等等,至于具体的应用可以在运用时翻阅资料得知,最基本的运用包括:取出元素,存放元素,计算容器量等

5.vector中的remove和erase的区别

remove是在C++中的STL中,因此若想使用它,则必须引入#include<algorithm>库,每次调用remove()后,都要调整vector的大小(调用resize()方法),否则会出现错误;

erase不需要引入#include<algorithm>库,也不需要resize(),但其移除的是迭代器所指向的元素,因此erase()参数必须为迭代器,否则会出错,如:

vector<int>  v;//假设此时d中已有数据

vector<int>::iterator itr=v.begin;

v.erase(*itr);//erase()方法中的参数就为迭代器itr所指向的元素

此外,iterator迭代器不会和容器同步变化,即若容器v在创建后就声明itr为其迭代器,则itr指向的容器v为空,即使在v添加元素后itr也不会有所变化

6.C++中可以通过如下办法将int型整数转换为字符串

#include<sstream>

int n;string s;

stringtream ss;

ss<<n;//将n传递给字符串输入流ss

ss>>s;//将ss传递给字符串s

7.next_permutation(begin,end)用于实现判断给定的数组在begin至end的范围之内时候还有全排列,若有,则会对数组进行全排列,该函数的返回值是bool类型,因此一般作为判断条件,相应的还有prev_permutation(begin,end),只不过前者是按字典序从前往后进行排列,后者是按字典序从后往前排列,如:


其结果为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值