[英]C++ map<string, vector<char> > access
我創建了一個矢量圖,如下所示:
map<string, vector<char> > myMap;
string key = "myKey";
vector<char> myVector;
myMap[key] = myVector;
我希望能夠將“char”添加到地圖中的向量中,但是一旦創建了特定的鍵/值(向量),我就無法弄清楚如何訪問所述向量以進行追加。 有什么建議? 我正在迭代char,並且可能會在我去的時候向向量添加很多東西,所以有一個簡單的方法可以做到這一點。 謝謝。
我想在我去的時候附加地圖中的矢量。 我不需要原始向量...我只需要返回我創建的鍵/向量的映射(在apending之后),以便我可以將它傳遞給另一個函數。 地圖*>中的*是做什么的? 這是指針嗎? (我還沒有在演講中到過那里)另外,我需要:myMap [key] - > push_back('s'); 或myMap [key] .push_back('s'); ??
附加:
myMap[key].push_back('c');
或者使用myMap.find
,但是你必須檢查你是否得到了一個end
迭代器。 operator[]
返回對vector
的引用。
但是這會修改存儲在map
的vector
,而不是原始vector
,因為你已經使用myMap[key] = myVector;
將副本存儲在map
myMap[key] = myVector;
。 如果這不是您想要的,您應該重新考慮您的設計,並可能存儲(智能)指向地圖中矢量的指針。
鑒於您知道關鍵:
string key = "something";
char ch = 'a'; // the character you want to append
map<string, vector<char> >::iterator itr = myMap.find(key);
if(itr != myMap.end())
{
vector<char> &v = itr->second;
v.push_back(ch);
}
您還可以使用map::operator[]
來訪問映射條目,但如果該鍵不存在,將創建一個具有該鍵的新條目:
vector<char> &v = myMap[key]; // a map entry will be created if key does not exist
v.push_back(ch);
或者干脆:
myMap[key].push_back(ch);
要訪問映射值(在您的情況下是矢量),您只需在方括號中提供鍵,就像分配值一樣。 所以,要附加'a':
myMap[key].push_back('a');
我有一個新的建議。 您可以使用vector<char>*
而不是vector<char>
來收集map
中矢量的指針。 有關更多信息,請參閱以下代碼:
map<string, vector<char>* > myMap;
string key = "myKey";
vector<char>* myVector = new vector<char>();
myMap[key] = myVector;
myMap[key]->push_back('S');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.