C++ 如何在c++;?

C++ 如何在c++;?,c++,sorting,c++11,vector,C++,Sorting,C++11,Vector,看看我的程序,我已经声明了一个映射对象的向量 #include<iostream> #include<map> #include<vector> #include<algorithm> using std::cout; using std::cin; using std::endl; using std::map; using std::string; using std::vector; using std::make_pair; using

看看我的程序,我已经声明了一个映射对象的向量

#include<iostream>
#include<map>
#include<vector>
#include<algorithm>

using std::cout;
using std::cin;
using std::endl;
using std::map;
using std::string;
using std::vector;
using std::make_pair;
using std::multimap;
using std::sort;


int main(void)
{
    vector< multimap<string , string>  > data;

    data.resize(1);
    data[0].insert(make_pair("outlook","sunny"));
    data[0].insert(make_pair("wind","weak"));

    data.resize(data.size() + 1);

    data[1].insert(make_pair("outlook","sunny"));   
    data[1].insert(make_pair("wind","strong"));

    data.resize(data.size() + 1);

    data[2].insert(make_pair("outlook","overcast"));    
    data[2].insert(make_pair("wind","weak"));

    data.resize(data.size() + 1);

    data[3].insert(make_pair("outlook","rain"));    
    data[3].insert(make_pair("wind","weak"));

    data.resize(data.size() + 1);

    data[4].insert(make_pair("outlook","rain"));    
    data[4].insert(make_pair("wind","weak"));

    data.resize(data.size() + 1);

    data[5].insert(make_pair("outlook","rain"));    
    data[5].insert(make_pair("wind","strong"));


    sort(data.begin() , data.end() , []( vector< multimap<string,string> >  a ,  vector< multimap<string,string> >  b)
    {
        return a[0].find("outlook")->second < b[0].find("outlook")->second;
    });


    return 0;
}
#包括
#包括
#包括
#包括
使用std::cout;
使用std::cin;
使用std::endl;
使用std::map;
使用std::string;
使用std::vector;
使用std::make_对;
使用std::multimap;
使用std::sort;
内部主(空)
{
向量数据;
数据。调整大小(1);
数据[0]。插入(配对(“outlook”、“sunny”);
数据[0]。插入(组成一对(“风”、“弱”);
data.resize(data.size()+1);
数据[1]。插入(配对(“outlook”、“sunny”);
数据[1]。插入(形成“风”、“强”);
data.resize(data.size()+1);
数据[2]。插入(成对(“展望”、“阴天”);
数据[2]。插入(使成对(“风”、“弱”);
data.resize(data.size()+1);
数据[3]。插入(配对(“outlook”、“rain”);
数据[3]。插入(使成对(“风”、“弱”);
data.resize(data.size()+1);
数据[4]。插入(配对(“outlook”、“rain”);
数据[4]。插入(使成对(“风”、“弱”);
data.resize(data.size()+1);
数据[5]。插入(配对(“outlook”、“rain”);
数据[5]。插入(形成“风”、“强”);
排序(data.begin(),data.end(),[](向量a,向量b)
{
返回a[0]。查找(“outlook”)->秒秒;
});
返回0;
}

我已经定义了一个排序函数,用于根据地图的“outlook”索引对向量条目进行排序,但该函数不起作用有人能告诉我这个函数有什么问题以及正确的排序方式吗?

将使用
vector::value\u type
类型的参数调用
std::sort
的谓词,而不是
vector
本身。将lambda表达式更改为

[](multimap<string,string> const& a, multimap<string,string> const& b)
{
    return a.find("outlook")->second < b.find("outlook")->second;
}

默认情况下,哪个将构造一个新的
多重映射

“不工作”:编译器错误?运行时错误?回答错了吗?什么是“不起作用”呢?谓词应该采用
constmultimap&
,但我不知道您的排序标准是什么…@PiotrS。“outlook”索引的价值—thanx Praetorian解决方案对我有效,thanx建议我使用“emplace_back()”,我对此一无所知。:)
data.emplace_back();