The code I have posted below compiles and runs fine, but the problem is the value_type passed into the parameter of the map_insert function must be copied.
I'm having difficulty passing it by reference. I have tried using the following:
"string_svector_map::reference vecPair_in"
and also
"string_svector_map::value_type &vecPair_in",
Both result in a compile-time error. I am confused why these do not work.
Can anyone alter this so that the value_type can be passed by reference?
Code:
using namespace std;
typedef map<string, vector<pair<string, string> > > string_svector_map;
string_svector_map::const_iterator map_insert(string_svector_map &map_in, string_svector_map::value_type vecPair_in){
pair<string_svector_map::const_iterator, bool> insert_result (map_in.insert(vecPair_in));
bool &inserted (insert_result.second);
if(!inserted){
throw runtime_error("Error inserting a pair into the map_in map....exiting program");
exit(0);
}
else
return insert_result.first;
}
int main(){
string s1 ("Hello"),
s2 ("World!"),
s3 ("help!");
string_svector_map the_map;
vector<pair<string, string> > the_vec;
the_vec.push_back(make_pair (s1, s2));
string_svector_map::const_iterator insert_result = map_insert(the_map, string_svector_map::value_type(s3, the_vec));
return 0;
}