【发布时间】:2017-11-14 10:31:49
【问题描述】:
我创建了以下比较器来测试地图:
struct comparator{
bool operatior() (int a,int b){
return 1;
}
}
然后是以下算法:
int main(){
// imports string to currentString
...
std::map<int,char> default_map;
std::map<int,char,comparator> test_map;
while(i < stringSize){
if(currentString[i] == '(' || currentString[i] == ')'){
default_map[i]=currentString[i];
test_map[i]=currentString[i];
}
}
auto currentIterator = default_map.begin();
while(currentIterator != default_map.end()){
printf("%d %c\n",currentIterator->first,currentIterator->second);
}
auto currentIterator = test_map.begin();
while(currentIterator != test_map.end()){
printf("%d %c\n",currentIterator->first,currentIterator->second);
}
return 0;
}
这里 default_map 打印所有括号,而带有自定义比较器的 test_map 只打印前两个括号。
这是地图代码中的错误吗? 我最初想将 class 作为带有自定义比较器的键,但它甚至不能使用自定义 int 键。
我的 make 文件确实使用了 -std=c++1y 标签,所以这可能会影响它吗? 我不知道该怎么办。我正在考虑看看 SGI 地图是否会比标准地图更好。
【问题讨论】:
标签: c++ stl std comparator stdmap