C++ map <string,vector <char >>访问

MCP*_*MCP 10 c++ stl vector map

我创建了一个矢量图,如下所示:

map<string, vector<char> > myMap;
string key = "myKey";
vector<char> myVector;
myMap[key] = myVector;
Run Code Online (Sandbox Code Playgroud)

我希望能够将"char"添加到地图中的向量中,但是一旦创建了特定的键/值(向量),我就无法弄清楚如何访问所述向量以进行追加.有什么建议?我正在迭代char,并且可能会在我去的时候向向量添加很多东西,所以有一个简单的方法可以做到这一点.谢谢.


我想在我去的时候附加地图中的矢量.我不需要原始向量...我只需要返回我创建的键/向量的映射(在apending之后),以便我可以将它传递给另一个函数.地图*>中的*是做什么的?这是指针吗?(我还没有在演讲中到过那里)另外,我需要:myMap [key] - > push_back('s'); 或myMap [key] .push_back('s'); ??

Fre*_*Foo 12

附加:

myMap[key].push_back('c');
Run Code Online (Sandbox Code Playgroud)

或者使用myMap.find,但是你必须检查你是否得到了end迭代器.operator[]返回对引用的引用vector.

但这种修改vector存储在map,而不是原来的一个,因为你已经存储在副本中mapmyMap[key] = myVector;.如果这不是您想要的,您应该重新考虑您的设计,并可能存储(智能)指向地图中矢量的指针.


Mey*_*sam 6

鉴于您知道关键:

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);
}
Run Code Online (Sandbox Code Playgroud)

您也可以使用它map::operator[]来访问映射条目,但如果密钥不存在,将创建具有该密钥的新条目:

vector<char> &v = myMap[key]; // a map entry will be created if key does not exist
v.push_back(ch);
Run Code Online (Sandbox Code Playgroud)

或者干脆:

myMap[key].push_back(ch);
Run Code Online (Sandbox Code Playgroud)