zoukankan      html  css  js  c++  java
  • [STL][C++]MAP

    参考链接:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html

    map头文件

     #include <map>

    map添加数据;

       map<int ,string> maplive;  
       1.maplive.insert(pair<int,string>(102,"aclive"));
       2.maplive.insert(map<int,string>::value_type(321,"hai"));
       3, maplive[112]="April";//map中最简单最常用的插入添加!

    map中元素的查找:

       find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。        

       map<int ,string >::iterator l_it;; 
       l_it=maplive.find(112);
       if(l_it==maplive.end())
                    cout<<"we do not find 112"<<endl;
       else cout<<"wo find 112"<<endl;

    map中元素的删除:
       如果删除112;
       map<int ,string >::iterator l_it;;
       l_it=maplive.find(112);
       if(l_it==maplive.end())
            cout<<"we do not find 112"<<endl;
       else  maplive.erase(l_it);  //delete 112;

    map的sort问题:
      Map中的元素是自动按key升序排序,所以不能对map用sort函数:

     map的基本操作函数:
          C++ Maps是一种关联式容器,包含“关键字/值”对
          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的函数

    stl map容器中指针的释放

    struct MyStruct
    {
        int i;
        char c;

        MyStruct(int i, char c)
        {
            this->i = i;
            this->c = c;
        }
    };

    int stl_ptr_test()
    {
        MyStruct* pst1 = new MyStruct(1, 'a');
        MyStruct* pst2 = new MyStruct(1, 'a');
        MyStruct* pst3 = new MyStruct(3, 'c');

        map<int, MyStruct*> map1; // 其中的value为指针型的

        map1.insert(pair<int, MyStruct*>(10, pst1));
        map1.insert(pair<int, MyStruct*>(11, pst2));
        map1.insert(pair<int, MyStruct*>(12, pst3));

        map<int, MyStruct*>::iterator iter = map1.find(11);
        cout << iter->second->i << ' ' << iter->second->c << endl;

        MyStruct* pst = iter->second;
        pst->c = 'b';

        iter = map1.find(11);
        cout << iter->second->i << ' ' << iter->second->c << endl;

        iter = map1.find(10);
        delete iter->second; // 释放指针
        map1.erase(10); // 从map中删除元素

        iter = map1.find(10);
        if (iter == map1.end())
        {
            cout << "not found" << endl;
        }
        else
        {
            cout << "found: " << iter->second->i << ' ' << iter->second->c << endl;
        }

        for (iter = map1.begin(); iter != map1.end();)
        {
            cout << iter->second->i << " " << iter->second->c << endl;

            delete iter->second; // 释放指针
            map1.erase(iter++); // 从map中删除元素,注意iter++的写法
        }

        map1.clear();

        return 0;
    }

    .//在遍历时删除

    int main(int argc, char* argv[])
    {
        map<string, string> mapData;
        
        mapData["a"] = "aaa"; 
        mapData["b"] = "bbb"; 
        mapData["c"] = "ccc"; 
    
    
        for (map<string, string>::iterator i=mapData.begin(); i!=mapData.end(); /*i++*/)
        {
            if (i->first == "b")
            {
                mapData.erase(i++);
            }
            else
            {
                i++;
            }
        }
        return 0;
    }
  • 相关阅读:
    程序员如何判断是否到了该辞职的时候?
    牛客网
    C++继承详解:共有(public)继承,私有(private)继承,保护(protected)继承
    为什么构造函数不能声明为虚函数,析构函数可以
    为什么要线程同步,说出线程同步的几种方法
    内存字节对齐
    std::map的删除
    阻塞调用ShellExecute函数
    无法打开包括文件:“SDKDDKVer.h”: No such file or directory
    Legacy C++ MongoDB Driver
  • 原文地址:https://www.cnblogs.com/lyggqm/p/4543739.html
Copyright © 2011-2022 走看看