Re: map<string, vector<string> > Question about partial
initialization
On Sep 11, 1:25 pm, "Mr. K.V.B.L." <kenverybigl...@gmail.com> wrote:
I want to start a map with keys but an empty vector<string>. Not sure
what the syntax is here.
Something like:
map<string, vector<string> > MapVector;
MapVector.insert(make_pair("string1", new vector<string>));
MapVector.insert(make_pair("string2", new vector<string>));
MapVector.insert(make_pair("string3", new vector<string>));
MapVector.insert(make_pair("string4", new vector<string>));
MapVector.insert(make_pair("string5", new vector<string>));
MapVector.insert(make_pair("string6", new vector<string>));
Obviously this isn't right, hence my question.
Eventually I pieced together the following:
#include <cstdio>
#include <iostream>
#include <string>
#include <map>
#include <vector>
using namespace std;
typedef map<string, vector<string> > MapVector;
int main(int argc, char *argv[])
{
vector<string> stringVector;
MapVector mp;
mp.insert(make_pair("string1", stringVector));
mp.insert(make_pair("string2", stringVector));
mp.insert(make_pair("string3", stringVector));
mp.insert(make_pair("string4", stringVector));
mp.insert(make_pair("string5", stringVector));
mp.insert(make_pair("string6", stringVector));
MapVector::iterator iter = mp.find("string5");
if (iter != mp.end()) {
iter->second.push_back("substring1");
iter->second.push_back("substring2");
iter->second.push_back("substring3");
iter->second.push_back("substring4");
iter->second.push_back("substring5");
iter->second.push_back("substring6");
iter->second.push_back("substring7");
}
for (MapVector::const_iterator Walker = mp.begin(); Walker !=
mp.end(); ++Walker) {
cout << Walker->first << endl;
for (vector<string>::const_iterator WalkerVector = Walker-
second.begin();
WalkerVector != Walker->second.end(); ++WalkerVector)
{
cout << *WalkerVector << endl;
}
}
}
This seems to work. What I was concerned over was dumping
'stringVector' into each new call to insert(). I was hoping it
wouldn't be a reference but a new object copy. The program gives this
output:
string1
string2
string3
string4
string5
substring1
substring2
substring3
substring4
substring5
substring6
substring7
string6
If you have any further thoughts, please feel free. My thanks.
Kelly