• STL map类测试


    /*
    STL map类的使用示例
    功能:常用增删改查函数测试
    */
    
    #include <map>
    #include <string>
    #include <iostream>
    using namespace std;
    
    int main()
    {
    // 无参构造对象
    map<char, string> m;
    map<int, int> m1;
    // 1、常用插入数据的方式
    // (1)call insert(ValTy&&) version 
    m.insert(make_pair('a', "apple"));
    // (2)call insert(const value_type&) version
    m1.insert({ { 4, 44 }, { 2, 22 }, { 3, 33 }, { 1, 11 }, { 5, 55 } });
    m.insert({ 'b', "balance" });
    // (3)使用运算符: 对象名[key] = Value
    m['c'] = "clone";
    
    // 2、常用遍历map表方式
    // (1)使用迭代器iterator it->first表示key it->second表示value
    map<char, string>::iterator it = m.begin();
    while (it != m.end())
    {
    cout << it->first << "<--->" << (it->second).c_str() << endl;
    ++it;
    }
    // (2)使用下标遍历
    // map < int, CString > 或者 map < int, 结构体名>的元素遍历
    int nSize = m1.size();
    for(int i = 1; i <= nSize; ++i)
    cout << m1[i] << endl;
    
    // 3、 查询表内是否存在指定的key 
    // (1)使用find方法
    //iterator find(const Key& _Key);
    //const_iterator find(const Key& _Key) const;
    
    map<char, string>::iterator m_RcIter = m.find('a');
    
    if (m_RcIter == m.end())
    cout << "The map m doesn't have an element "
    << "with a key of 'a'." << endl;
    else
    cout << "The element of map m with a key of 'a' is: "
    << m_RcIter->second << "." << endl;
    
    m_RcIter = m.find('g');
    if (m_RcIter == m.end())
    cout << "The map m doesn't have an element "
    << "with a key of 'g'." << endl;
    else
    cout << "The element of map m with a key of 'g' is: "
    << m_RcIter->second << "." << endl;
    
    // (2)使用 Count方法来查询
    //size_type count(const Key& _Key) const;
    bool i = m.count('d');
    cout << "The number of elements in m1 with a sort key of 'd' is: "
    << i << "." << endl;
    
    // (3)使用at()方法,如果没找到,则中断程序,弹出一个断言
    //Type& at(const Key& _Key);
    //const Type& at(const Key& _Key) const;
    string str1 = m.at('a');
    
    // 4、 删除
    //iterator erase(iterator _Where); // 删除指定位置
    //iterator erase(iterator _First,iterator _Last); // 删除指定范围
    //size_type erase(const key_type& _Key); // 删除指定key
    int j = m1.erase(0);
    if (j)
    cout << "删除成功!" << endl;
    else
    cout << "删除失败!" << endl;
    map<int, int>::iterator m1_it;
    m1_it = m1.begin();
    m1.erase(m1_it);
    m1.erase(m1.begin(), m1.begin()++);
    
    return 0;
    }
    

      

  • 相关阅读:
    Nuget~打包时添加powershell初始化脚本
    ELK系列~对fluentd参数的理解
    arclistsg独立单表模型文档列表
    arcpagelistarclist列表分页
    autochannel 指定栏目
    ini文件解析c库(iniparser)
    POJ 1386 有向图欧拉通路
    最好用的20个数据可视化工具(四)
    各种语音编码总结
    struts2讲义----二
  • 原文地址:https://www.cnblogs.com/veis/p/12548810.html
Copyright © 2020-2023  润新知