【发布时间】:2013-11-18 11:51:47
【问题描述】:
#include <iostream>
#include <algorithm>
#include <map>
#include <iterator>
int main()
{
typedef std::map<int, int> Key2NodeMap;
Key2NodeMap first;
first[1] = 2;
first[2] = 2;
first[3] = 3;
first[4] = 2;
Key2NodeMap second;
second[1] = 1;
second[2] = 2;
second[3] = 3;
second[4] = 2;
Key2NodeMap m;
///std::set_difference(first.begin(), first.end(),
/// second.begin(), second.end(), m.begin());
///std::set_difference(first.begin(), first.end(),
/// second.begin(), second.end(), std::inserter(m, m.end()));
return 0;
}
map.begin() 返回迭代器是双向迭代器。 “所有不是常量迭代器的前向、双向和随机访问迭代器也是有效的输出迭代器。” --- http://www.cplusplus.com/reference/iterator/OutputIterator/
为什么第一行注释无效?
【问题讨论】:
-
据我所知错误信息:
note: synthesized method 'std::pair<const int, int>& std::pair<const int, int>::operator=(const std::pair<const int, int>&)' first required here *__result = *__first1;问题是键类型是const int,因此无法分配对值。因此,您必须使用插入器进行调整。
标签: c++