Какая альтернатива, если мне нужно использовать ссылку, и данные, которые я передаю, я не могу изменить тип, поэтому я не могу хранить указатель на него?
Код:
#include <map>
#include<iostream>
#include<string>
using namespace std;
int main()
{
string test;
pair<string, string> p=pair<string, string>("Foo","Bar");
map<pair<string, string>, string&> m;
m[make_pair("aa","bb")]=test;
return 0;
}
Ошибка:
$g++ MapPair.cpp /usr/include/c ++/3.2.3/bits/stl_map.h: При создании
std::map<std::pair<std::string, std::string>, std::string&, std::less<std::pair<std::string, std::string> >, std::allocator<std::pair<const std::pair<std::string, std::string>, std::string&> > >': MapPair.cpp:15:
std::string &" MapPair.cpp: В function
instantiated from here /usr/include/c++/3.2.3/bits/stl_map.h:221: forming reference to reference typeint main()': MapPair.cpp:16: no match for
std:: map, std::string &, std:: less > ,
станд:: распределитель,
std::string & → > & Оператор [std:: pair] ' /usr/include/c ++/3.2.3/bits/stl_pair.h: В глобальном масштабе: /usr/include/c ++/3.2.3/bits/stl_pair.h: При созданииstd::pair<const std::pair<std::string, std::string>, std::string&>': /usr/include/c++/3.2.3/bits/stl_tree.h:122: instantiated from
std:: _ Rb_tree_node
Что я делаю неправильно, чтобы вызвать это сообщение?