c++里面map和set的用法和java比真的是麻烦很多,之前一直都是在用java写程序,现在写一些OJ上面题目想用C++,可是map和set的操作突然就不会了,java是在c++的基础上发展出来的,java也简化了c++里面很多复杂的用法。
好了言归正传,我们来谈谈map和set。
map
- 声明
- 插入
- 查找
- 删除
- 历遍
恩,注释在下面的代码里都写了,就不展开了,就是这么懒。
#include<iostream>
#include<map>
using namespace std;
int main(){
//map声明,加入有文件map
map<int, int> m;
//插入元素要用makr_pair的方式
m.insert(make_pair(1, 5));
//通过iterator来查找map里面的元素
map<int, int>::iterator ite;
ite = m.find(1);
//如果找到了,那么我们就删除掉原有的元素,加入新元素
//因为后来加入的元素如果键重复,不能覆盖,会被忽略
if(ite != m.end()){
m.erase(1);
m.insert(make_pair(1, 6));
}else{
//没找到直接加入
m.insert(make_pair(1, 6));
}
//用这种方式,来输出键值对的值
cout << ite->second << endl;
//历遍map元素,并输出键值对
for(ite = m.begin(); ite != m.end(); ite++){
cout << ite->first << "\t" << ite->second << endl;
}
}
set
set的操作和map一模一样,看懂了map,set的操作就很好理解了。
#include<iostream>
#include<map>
#include<set>
using namespace std;
int main(){
//声明集合,加入头文件<set>
set<int> s;
//向集合中插入元素
s.insert(1);
s.insert(2);
s.insert(3);
//在集合中查找元素
set<int>::iterator ite;
ite = s.find(1);
if(ite == s.end()){
cout << "Not found" << endl;
}else{
cout << "Found" << endl;
}
//集合删除元素
s.erase(2);
//在集合中查找元素的第二种方式
if(s.count(3) != 0){
cout << "Found" << endl;
}else{
cout << "Not found" << endl;
}
//历遍集合元素
for(ite = s.begin(); ite != s.end(); ite++){
cout << *ite << endl;
}
}
多练练就自然记得了。