Это мое первое сообщение - извините, если я исповедую какие-либо соглашения с сайтом. Просьба указать любые ошибки, которые я делаю, чтобы я мог их исправить/не повторять.std :: map: перегрузка оператора <с параметром, отличным от класса ключа
c++ reference: std::map - rational operators
Я хочу, чтобы иметь возможность использовать std::map
«s operator[]
положив std::string
между кронштейнами - даже несмотря на то ключ map
не std::string
,
вот код
class myKey
{
public:
std::string _name;
myKey(std::string name)
{
_name = name;
}
bool operator<(const myKey& other) const
{
if (this->_name < other._name)
{
return true;
}
else
{
return false;
}
}
};
int main()
{
std::map<myKey, int> map;
myKey temp("keyString");
map[temp] = 1;
std::cout << map[temp];
system("pause");
return 0;
}
До сих пор это работает отлично - но как вы можете видеть, единственное, что оператор использует это std::string _name
поле класса. Я не смогу найти значение на карте, просто введя строку так: map["keyString"]
.
Я попытался перегрузить operator<
из myKey
, но это не помогло.
bool operator<(const std::string name) const
{
if (this->_name < name)
{
return true;
}
else
{
return false;
}
}
Как это можно сделать?
вы пытались добавить 'MYKEY :: MYKEY (Const символ * имя)'? – nwp