map 的遍历
代码示例
#include <map>
#include <string>
#include <iostream>
using namespace std;
int main()
{
map<int, string> mapStudent;
mapStudent.insert(pair<int, string>(1, "student_one"));
mapStudent.insert(pair<int, string>(2, "student_two"));
mapStudent.insert(pair<int, string>(3, "student_three"));
map<int, string>::iterator iter; // 迭代器
for(iter = mapStudent.begin(); iter != mapStudent.end(); iter++){
printf("%d %d
", iter->first, iter->second); // 直接引用两个元素
}
}
判断一个元素是否出现过
1 . count
mp.count( x );
当 x 出现过,函数的返回值为 1 , 当没有出现过,函数的返回值为 0 。
2 . find ();
map<int, int>mp;
mp[10] = 3; mp[20] = 5; mp[30] = 7;
map<int, int>::iterator it;
it = mp.find(22);
printf("%d
", it->second);
若要查找的元素,则返回所要查找的元素对应的在容器中的位置,若不存在,则返回 test.end( ) 。
删除元素
map<int, int>::iterator it; mp.erase( it ); //删除后 it 所指向的地址是删除元素的当前地址 。若是在遍历时删除了元素,则在遍历时在给it++,则会出现错误 好坑啊这里 !!
lower_bound( x ) 函数返回大于等于 x 的第一个迭代器的位置
int main() {
map<int, int>mp;
mp[10] = 3; mp[20] = 5; mp[30] = 7;
map<int, int>::iterator it;
it = mp.lower_bound(20);
printf("%d
", it->second);
return 0;
}
upper_bound( x ) 函数返回大于 x 的第一个迭代器的位置
int main() {
map<int, int>mp;
mp[10] = 3; mp[20] = 5; mp[30] = 7;
map<int, int>::iterator it;
it = mp.upper_bound(20);
printf("%d
", it->second);
return 0;
}