头文件
#include <map>
定义
map<int, string> myMap; 前为key,后为value
插入元素:
1、myMap[1] = "One";
2、myMap.insert(map<int, string>::value_type(1,"One"));
3、myMap.insert(pair<int, string>(1,"One"));
4、my_Map.insert(make_pair<int, string>(1,"One"));
寻找and修改数据:
string str = myMap[1];
myMap[2] = "Two";
map<int, string> ::iterator it;
it = myMap.find(1);
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器,即it == myMap.end() 。
通过map对象的方法获取的iterator数据类型是一个std::pair对象,包括两个数据 iterator->first 和 iterator->second 分别代表关键字和存储的数据
删除数据
myMap.erase(it); //通过迭代删除
myMap.erase(iterator first, iterator last); //删除一个范围
myMap.erase(const Key& key); //通过关键字删除
其他
map的基本操作函数:
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的函数
myMap.size() 返回元素数目
myMap.empty() 判断是否为空
myMap.clear() 清空所有元素
下面这个是在map中添加组,读取文件中的string,然后算出文件中最大的独一无二的string。
#include <iostream>
#include <fstream>
#include <map>
#include <string>
using namespace std;
void MapTest(ifstream & in){
map<string, int> myMap;
string word;
while(true){
in >> word;
if(in.fail()) break;
if(myMap.find(word) != myMap.end()){
int cout = myMap[word];
myMap.insert(pair<string, int>(word, cout++));
}else{
myMap.insert(pair<string, int>(word, 1));
}
if(in.eof()) break;
}
cout << myMap.size() << " unique word";
}
int main(){
ifstream in;
string fileName = "name.txt";
in.open(fileName);
MapTest(in);
}