簡體   English   中英

C ++ map <string,vector <char >>訪問

[英]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的引用。

但是這會修改存儲在mapvector ,而不是原始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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM