• C++ vector 使用笔记


    map 插入 vector 

    #include <string>   
    
    #include <iostream>   
    
    #include <algorithm>   
    
    #include <map>   
    
    #include <vector>   
    
    using namespace std;   
    
    typedef map<string, string> STRING2STRING;   
    
    typedef std::map<string, vector<string > > STRING2VECTOR;   
    
     
    
    int main()   
    {   
    
        std::map<string, string > map_test;   
    
        map_test.insert(STRING2STRING::value_type("2001", "test1"));   
        map_test.insert(STRING2STRING::value_type("2005", "test5"));   
    
        map<string, string>::const_iterator map_conitor = map_test.begin();   
        for(; map_conitor!= map_test.end(); map_conitor++)   
        {   
    
            cout<<map_conitor->first<<"  "<<map_conitor->second<<endl;      
        }   
    
    
        
    
        map<int, vector<string> > m_map; 
    
    
        vector<string> m_vec;
        m_vec.resize(2);
    
        m_vec[0] = "aaaaa";
        m_vec[1] = "bbbbb";
        // m_vec.clear();
        // cout<<m_vec[0]<<endl;
    
    
        m_map[0] = m_vec;
        if(m_map[0].empty()) { cout<<"not push_back can not assignment"<<endl;}
       
        cout<<m_map[0][1]<<endl;
    
    
    
    
        //  push_back 方式
        vector<string> m_vecPush;
        m_vecPush = m_map[0];
        cout<<"assignment m_vecPush:"<<m_vecPush[0] <<endl;
    
    
    
        map<int, vector<string> > m_mapPush;
        m_vecPush.resize(2);
    
        m_vecPush.push_back("aaaaa");
        m_vecPush.push_back("bbbbb");
    
        
        //  m_mapPush[0] = m_vecPush;   与 m_mapPush.insert 等价
        m_mapPush.insert(pair<int,vector<string> >(0,m_vecPush));  
    
    
    
    
       if(m_mapPush[0].empty()) { cout<<"push_back can not assignment"<<endl;}
        cout<<m_mapPush[0][1]<<endl;
    
    
    
        // m_mapPush[dev_id].empty()  与  m_mapPush.find(dev_id) == m_mapPush.end() 类似
        if(m_mapPush[2].empty()) {
            cout<<"m_mapPush empty way  not exits"<<endl;
        }
    
        if(m_mapPush.find(1) == m_mapPush.end()) {
            cout<<"m_mapPush find way  not exits"<<endl;
        }
    
    
    
    
        /////////////////////////// vector 清空元素  ///////////////////////////////
         // 清空元素,不回收空间
        m_vecPush.clear(); 
        cout<<"clear vector size:"<<m_vecPush.capacity()<<endl;
        // 清空元素并释放空间
        m_vecPush.clear(); 
        vector<string>().swap(m_vecPush);
        cout<<"swap vector size:"<<m_vecPush.capacity()<<endl;
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
     }

     之前在开发板上使用

    m_vec[0] = "aaaaa"; 这种方式,然后用 m_map[0] = m_vec; 发现m_vec赋值不成功。要用m_vec.push_back("aaaa")这种方式才能赋值给map。 但在台式linux上不存在这种情况。

  • 相关阅读:
    如何在Unity中播放影片
    C# typeof()实例详解
    unity3d用鼠标拖动物体的一段代码
    unity3d中Find的用法
    geometry_msgs/PoseStamped 类型的变量的构造
    c++ ros 计算两点距离
    C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值
    C++ 结构体指针的定义
    Cannot initialize a variable of type 'Stu *' with an rvalue of type 'void *'
    C++中的平方、开方、绝对值怎么计算
  • 原文地址:https://www.cnblogs.com/hzijone/p/6600301.html
Copyright © 2020-2023  润新知