【发布时间】:2018-09-21 15:23:07
【问题描述】:
这是代码,可以编译,但是不能运行,为什么?:
#include <iostream>
#include <map>
#include <vector>
using namespace std;
int main() {
typedef multimap<vector< int >, char> mmap;
mmap foo;
vector<int> v;
v.push_back(15);
v.push_back(14);
foo.insert(pair<vector< int >, char> (v, 'b'));
v.clear();
v.push_back(15);
v.push_back(80);
foo.insert(pair<vector< int >, char> (v, 'c'));
v.clear();
v.push_back(9);
v.push_back(17);
foo.insert(pair<vector< int >, char> (v, 'a'));
v.clear();
mmap::iterator iter;
for (int i = 0; i < iter->first.size(); ++i) {
wcout << iter->first[i] << " ";
for (iter = foo.begin(); iter != foo.end(); ++iter) {
wcout << iter->second << " ";
}
wcout << endl;
}
}
输出:
15 80 c
15 14 b
9 月 17 日
我想加上整数,然后排序: (数字从大到小排序
80+15>15+14>9+17
怎么做?
【问题讨论】:
-
您可以提供使用元素总和的自定义比较器,这是您需要的吗?
-
这段代码实际上给了你输出?不应该,因为您从未将
iter设置为有效的迭代器。 -
std::sort 是一个东西,方便地,它可以带一个自定义比较函数。
-
你真的应该避免
using namespace std- 这是一个坏习惯,当你没想到它时can silently change the meaning of your program。习惯于使用命名空间前缀(std故意很短),或者将只是您需要的名称导入到最小合理范围。
标签: c++ sorting vector int multimap