STL map 一般操作




#include 
#include 
#include 
using namespace std;
typedef map::iterator iter_t;
typedef map::reverse_iterator r_iter_t;

int main() {
    map test;
    test["2+4"] = 6;
    test["1+2"] = 3;

    if (test["1+3"] == 0) ;

    pair ret;
    // insert(map::value_type())
    ret = test.insert(pair("1+4", 5));
    printf("%d\n", ret.second);

    ret = test.insert(pair("1+3", 5));
    printf("%d\n", ret.second);
    
    iter_t f = test.find("1+4");

    //C++11 The other versions return an iterator to the element that follows 
    // the last element removed
    //C++98 void erase (iterator first, iterator last);
    if (f != test.end()) {
        test.erase(f);
        printf("%s : %d\n", f->first.c_str(), f->second);
    }

    test.erase(test.find("1+3"), test.end());

    f = test.find("1+1");
    if (f == test.end()) {
        test.insert(pair("1+1", 2));
    }

    printf("size: %d\n", (int)test.size());

    // cbegin&cend return const_iterator
    
    printf("---------------------------\n");
    for (iter_t i = test.begin() ; i != test.end() ; ++i) {
        printf("%s %d\n", i->first.c_str(), i->second);
    }
    printf("---------------------------\n");
    for (r_iter_t i = test.rbegin() ; i != test.rend() ; ++i) {
        printf("%s %d\n", i->first.c_str(), i->second);
    }
    printf("---------------------------\n");

    test.clear();
    printf("size: %d\n", (int)test.size());

    return 0;
}



你可能感兴趣的:(C/C++)