c++之map函数/迭代器

参考文献:https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main()
{
//删除某个元素  erase():
    map<int, string> mapStu;
    mapStu.insert(map<int, string>::value_type(1, "stu1"));
    mapStu.insert(map<int, string>::value_type(2, "stu2"));
    mapStu.insert(pair<int, string>(3, "stu3"));

    map<int, string>::iterator itor;
    itor = mapStu.find(1);

    mapStu.erase(2);    //根据键值删除某个元素
    //mapStu.erase(itor);    //根据迭代器删除
    //mapStu.erase(mapStu.begin(), mapStu.end());    //删除一个范围内的

    for (itor = mapStu.begin(); itor != mapStu.end(); itor++)
        cout << itor->second <<endl;

//find函数:传入的参数是要查找的key。
//用find函数来定位数据出现位置,它返回的一个迭代器,当数据出现时,
//它返回数据所在位置的迭代器,如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器。
/*    map<int, string> mapStu;
    mapStu.insert(map<int, string>::value_type(1, "stu1"));
    mapStu.insert(map<int, string>::value_type(2, "stu2"));
    mapStu.insert(pair<int, string>(3, "stu3"));

    map<int, string>::iterator itor;
    itor = mapStu.find(3);
    if (itor != mapStu.end())
        cout << itor->second << endl;    //stu3

    itor = mapStu.lower_bound(1);
    if (itor != mapStu.end())
        cout << itor->second << endl;    //stu1

    itor = mapStu.upper_bound(1);
    if (itor != mapStu.end())
        cout << itor->second << endl;    //stu2

    itor = mapStu.lower_bound(2);
    if (itor != mapStu.end())
        cout << itor->second << endl;    //stu2

    itor = mapStu.upper_bound(2);
    if (itor != mapStu.end())
        cout << itor->second << endl;    //stu3

    pair<map<int, string>, map<int, string>> pairStu;
    pairStu = mapStu.equal_range(2);    //equal_range(2)
    if (pairStu.first == pairStu.second)
        cout << "不存在" << endl;
*/
//数组形式遍历
    /*map<int, string> mapStu;
    mapStu.insert(map<int, string>::value_type(1, "stu1"));
    mapStu.insert(map<int, string>::value_type(2, "stu2"));
    mapStu.insert(pair<int, string>(3, "stu3"));

    int nsize = mapStu.size();
    for (int size = 1; size <= nsize; size++)
        cout << mapStu[size] << endl;*/

//反向遍历
    //map<int, string> mapStu;
    //mapStu.insert(map<int, string>::value_type(1, "stu1"));
    //mapStu.insert(map<int, string>::value_type(2, "stu2"));
    //mapStu.insert(pair<int, string>(3, "stu3"));
    //pair<map<int, string>::iterator, bool> pair_insert;

    //pair_insert = mapStu.insert(pair<int, string>(3, "stu4"));
    //if (pair_insert.second == true)
    //    cout << "success" << endl;
    //else
    //    cout << "fail" << endl;

    //map<int, string>::reverse_iterator itor;
    //for (itor = mapStu.rbegin(); itor != mapStu.rend(); itor++)
    //    cout << itor->first << " " << itor->second << endl;

    //int size = mapStu.size();
    //cout << size << endl;


//关于是否能够替换:数组方式2
    //map<int, string> mapStu;
    //mapStu.insert(map<int, string>::value_type(1, "stu1"));
    //mapStu.insert(map<int, string>::value_type(2, "stu2"));
    //mapStu.insert(pair<int, string>(3, "stu3"));
    //pair<map<int, string>::iterator, bool> pair_insert;

    //pair_insert = mapStu.insert(pair<int, string>(3, "stu4"));
    //if (pair_insert.second == true)
    //    cout << "success" << endl;
    //else
    //    cout << "fail" << endl;

    //map<int, string>::iterator itor;
    //for (itor = mapStu.begin(); itor != mapStu.end(); itor++)
    //    cout << itor->first << " " << itor->second <<endl;

    //int size = mapStu.size();
    //cout << size << endl;

//关于是否能够替换:数组方式1
    //map<int, string> mapStu;
    //mapStu[1] = "stu0";
    //mapStu[2] = "stu1";
    //mapStu[3] = "stu2";
    //mapStu[3] = "stu3";        //输出替换了stu2
    //map<int, string>::iterator itor;
    //for (itor = mapStu.begin(); itor != mapStu.end(); itor++)
    //    cout << itor->second << endl;


//方法3
    //map<int, string> mapStu;
    //mapStu[1] = "stu0";
    //mapStu[2] = "stu1";
    //mapStu[3] = "stu2";
    //map<int, string>::iterator itor;
    //for (itor = mapStu.begin(); itor != mapStu.end(); itor++)
    //    cout << itor->first << endl;


//方法2
//    map<int, string> mapStu;
//    mapStu.insert(map<int,string>::value_type(1, "stu1"));    
//    mapStu.insert(map<int,string>::value_type(2, "stu2"));
//    mapStu.insert(map<int, string>::value_type(3, "stu3"));
//    map<int, string>::iterator iter;
//    for (iter = mapStu.begin(); iter != mapStu.end(); iter++)
//        cout << iter->second << endl;

//方法1
    /*map<int, string> mapStu;
    mapStu.insert(pair<int, string>(1, "stu1"));
    mapStu.insert(pair<int, string>(2, "stu2"));
    mapStu.insert(pair<int, string>(3, "stu3"));

    map<int, string>::iterator inter;
    for (inter = mapStu.begin(); inter != mapStu.end(); inter++)
        cout << inter->first << endl;*/
        
    system("pause");
    return 0;
}
原文地址:https://www.cnblogs.com/weiyouqing/p/9307758.html