如何在C ++中的地图STL中插入键作为类

时间:2016-08-01 06:50:02

标签: c++ dictionary stl

以下程序有什么问题,为什么我无法用类初始化地图作为键

n

在上面的程序中,如果我尝试将键添加为类,则会出错。 请告诉我们初始化地图的不同方法。

2 个答案:

答案 0 :(得分:5)

std::mapvalue_typestd::pair<const Key, T>,表示密钥保存为const。所以你不能像std::cout<<it->first.getId()那样调用非const成员函数。

您应该将User::getId()(和User::getUid())更改为const成员函数。如:

int getId() const {
//          ~~~~~
    return value_1;
}
int getUid() const {
//           ~~~~~
    return value_2;
}

顺便说一句:ifoperator<条件失败时,您没有返回任何内容。

bool operator< (const User& userObj) const
{
    if(userObj.value_1 < this->value_1)
        return true;
    else
        return false;  // return for else case
}

或只是

bool operator< (const User& userObj) const
{
    return userObj.value_1 < this->value_1;
}

答案 1 :(得分:1)

首先,您应该让您的运算符始终返回一个值:

bool operator< (const User& userObj) const
{
    return userObj.value_1 < this->value_1;
}

您确定要将x < yy.value < x.value进行比较吗?否则,您需要更改内部比较:

bool operator< (const User& userObj) const
{
    return this->value_1 < userObj.value_1;
}

在写这个答案的时候,第二部分的歌曲要比我快,所以看看他的答案......