我已经创建了下列比较测试图的所有元素:C++地图定制比较器不插入
struct comparator{
bool operatior() (int a,int b){
return 1;
}
}
则以下algorthim:
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仅打印前两个括号。
这是地图代码中的错误吗? 我原本想用自定义比较器将类作为键,但它甚至没有使用自定义int键。
我的make文件确实使用-std = C++ 1y标签,所以这可能会影响它? 我不知道该怎么做。我正在考虑查看SGI地图是否会比标准地图效果更好。
谢谢。我为比较器做了这样的事情: if(a> b)return 1; else if(a == b)return 0; else return -1; – Henrickunit
那么如果两个元素相等会发生什么?我想它只是切换a和b来检查。好吧有道理。 – Henrickunit