我在地圖中使用了一對字符串作爲鍵,並將int作爲值。我想要搜索地圖,如果確切的一對已經存在,請增加該值,否則將該對插入到地圖中(值爲1)。但是,它編譯的實際上並不是找到已經存在的對,而只是插入。 (輸出僅用於測試目的)。我認爲問題是使用.find()與對,但不知道如何解決這個問題...在地圖中使用.find()函數時,該鍵是一對C++
回答
您顯示的代碼似乎是正確的。你能用一個完整的例子來演示嗎?包括main
?
此外,我認爲你可以逃脫的operator[]
:
++pairs[std::make_pair(*slow, *fast)];
然而,真正的問題可能是,你希望pairs
是一個「out」參數,當你按值傳遞。您的功能只能修改容器的副本。你想通過引用來取而代之。 map<pair<string, string>, int> findPairs(map<pair<std::string,std::string>, int>& pairs, multiset<string> artists){
(注意參數pairs
之前的&
)。
非常感謝你!通過參考工作!不知道爲什麼我沒有想到這個 – user1967688
有沒有錯後置碼
但是,你正在做的比要求太多。例如,該代碼是,
yo=pairs.find(p);
if (yo==pairs.end())
{
pairs.insert(make_pair(p,1));
cout<<"inserted"<<endl;
}
else
{
yo->second+=1;
cout<<"entered"<<endl;
}
是完全等同於這樣的:
pairs.insert(make_pair(p,1)).first->second += 1;
這正好相當於此:
++pairs[p];
這意味着整個代碼可以替換隻是++pairs[p]
,或只是這個:
++pairs[make_pair(*slow, *fast)];
因爲p
畢竟是make_pair(*slow, *fast)
。
我試過了:pair
@ user1967688:這不是可行的。如果它正在插入,那麼鍵是不同的。嘗試打印所有鍵值對。 – Nawaz
我確實嘗試了打印所有關鍵值 - 相同的值多次列出,值爲1.您認爲搜索一對關鍵值時存在問題嗎?它有可能無法識別相等的對子嗎? – user1967688
- 1. C++與結構使用.find()在地圖
- 2. C#:在另一個函數中使用本地對象
- 3. 在地圖中迭代和使用find()C++
- 4. 在集合中使用find()函數
- 5. 調用成員函數find()在一個非對象中IN Simple_html_Dom
- 6. Python:不使用find函數
- 7. 什麼是string :: find(char c)應該在C++中返回
- 8. 在C++函數中使用本地類
- 9. 在這個函數中使用jQuery.contains()方法而不是find()
- 10. C++如何使用find函數查找char數組中的char?
- 11. 在地圖中使用本地函數時的Python值錯誤
- 12. 在地圖中使用數組作爲鍵C++
- 13. 我應該在OOP中使用單個函數還是對象?
- 14. 調用一個C++函數,該函數使用boost :: python
- 15. java鍵/值對對象,這不是一個數組/地圖
- 16. jQuery,在父函數上使用.find?
- 17. MongoDB的:同一個字段的值,而是使用find()函數
- 18. C++ find()用於映射成員函數
- 19. 什麼是複製構造函數,什麼時候應該在C#中使用?
- 20. jQuery(...)。find(...)。circleProgress不是函數
- 21. mongodb - find()不是函數
- 22. 使用一個鍵和一對值對地圖進行排序?
- 23. 在C++地圖中使用地圖
- 24. this.http.post(...)地圖是不是一個函數
- 25. 在Eclipse中是否有一個很好的「find all」函數?
- 26. 當地圖中的鍵是一個對象時,如何通過該對象的屬性進行搜索?
- 27. 當在C中調用函數時,是否應該給變量賦予一個新地址?
- 28. C++ - 在DDX_Text函數中,nIDC應該是唯一的嗎?
- 29. C++:我應該使用Boost.Date_Time Posix時間還是本地時間?
- 30. find(...)。填充不是函數在貓鼬
看起來不錯。也許你應該展示更多的代碼。你有沒有測試過你試圖找到的那對是插在地圖上的? (通過遍歷地圖並打印) –
不是'++喲[p]'完全符合你的要求嗎? –
@JamesKanze:編號'yo'是一個迭代器,而不是'std :: map'。 – Nawaz