是否涉及地圖
回答
operator[]
在std::map< class Key, class Value
用於獲取對應於特定鍵(實際上,它返回一個引用,但w/e)的值。在你的情況,你會使用這樣的:
(碼片1)
std::map<std::string,std::vector<std::string>> m;
<...>
std::string the_key_you_need("this is the key");
std::vector<std::string> value = m[the_key_you_need];
value.push_back(<...>)
這是不一樣的:
(碼片2)
std::map<std::string,std::vector<std::string>> m;
<...>
m[the_key_you_need].push_back(<...>);
因爲在第一個中,您正在製作一個副本m[the_key_you_need]
命名爲value
,並將新字符串複製到副本,這意味着它不會在m
中結束。第二個是正確的做法。
另外,m[<something>] = value.push_back(<something_else>)
將不起作用,因爲vector::push_back()
返回void。如果你想要做這種方式,你將需要:
(碼片3)
std::map<std::string,std::vector<std::string>> m;
<...>
std::string the_key_you_need("this is the key");
std::vector<std::string> value = m[the_key_you_need];
value.push_back(<...>)
m[the_key_you_need] = value;//here you are putting the copy back into the map
在這種情況下,代碼段2和3確實是相當的(但這段代碼2更好,因爲它不會創建不必要的副本)。
說明它返回一個參考解釋了很多。我問的原因是,我讀到STL與副本一起工作,它總是返回一個副本,並使傳遞的對象的副本http://stackoverflow.com/questions/14074289/does-passing-stl-containers-make-a -複製。也許我誤解了答案 – Rajeshwar
@Raje,我已經編輯了一些答案,以進一步澄清它。你可以檢查map的運算符[]'的確是返回一個引用[here](http://en.cppreference.com/w/cpp/container/map/operator_at) – SingerOfTheFall
所以問題是在這種情況下它返回的是複製或參考? – Rajeshwar
- 1. CogroupBy是否只涉及一名工人?
- 2. QGraphicsItem :: mapFromItem()是否涉及轉換?
- 3. @Autowired是否只涉及一個對象?
- 4. 返回本地是否也涉及創建返回臨時?
- 5. C++地圖錯誤的地圖,可能涉及分配器
- 6. 射線追蹤算法是否涉及圖像的光柵化?
- 7. 意圖涉及內部類
- 8. 涉及位置
- 9. 涉及DMV
- 10. Ç涉及管
- 11. 涉及組合
- 12. 涉及數據
- 13. ember.js containerview涉及
- 14. 涉及jQuery的
- 15. 涉及多個NIC時的IP地址
- 16. 如何確定是否加入2號將涉及regourping /攜帶或subracting 2號將涉及借款?
- 17. 是否有涉及事件處理的單獨線程?
- 18. 當涉及到調用渲染方法時,ReactJS是否「聰明」?
- 19. 是否有顯示ä就象Vim所涉及的可能?
- 20. REST服務類型是否涉及數據流?
- 21. 沒有涉及服務器的XSS - 這是否危險?
- 22. 如何在涉及兩個表時檢查是否存在行?
- 23. 「ApplicationServices」的正確名稱是否涉及交叉關注「東西」?
- 24. .NET Core項目是否涉及跨平臺的PCL?
- 25. 下面的php代碼是否有涉及安全風險?
- 26. 是否有涉及PHP函數getimagesize()的任何安全保留?
- 27. 涉及同一列的多個索引是否有用?
- 28. 類似binaryWriter.Write((字節)67)是否涉及運行時間轉換?
- 29. 是否有可能涉及使用L2S或EF主/子記錄
- 30. SQL INSERT是否涉及任何讀/寫鎖?
你的例子甚至不會編譯。 –
s/pushback/push_back? – doctorlove
即使您忽略明顯的拼寫錯誤,這也沒有多大意義 – nijansen