我已經創建了下列比較測試圖的所有元素: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