C ++ Map不能与pair一起插入

时间:2009-08-03 18:53:44

标签: c++ dictionary visual-studio-2008 insert

为什么我不能插入如下所示?

#include <map>

struct something {

} some_object;

typedef std::map<std::string, something*> list;
typedef std::pair<std::string, something*> pair;

int main()
{
    list l;
    pair p("abc", &some_object); // working fine!!!
    l.insert(p); // 17 errors

    return 0;
}

Visual Studio给了我很多错误,我对它们一无所知。第一个是:

error C2784: 'bool std::operator <(const std::_Tree<_Traits> &,const std::_Tree<_Traits> &)' : could not deduce template argument for 'const std::_Tree<_Traits> &' from 'const std::string'

我可以发布更多但我不想在这里发送垃圾邮件。非常感谢你的帮助。

2 个答案:

答案 0 :(得分:3)

你需要

#include <string>

答案 1 :(得分:1)

我会改变这一行:

typedef std::pair<std::string, something*> pair;

您正在转发实施细节。你确定这个库的未来版本总是如此吗?像这样紧密地耦合你的代码是一个坏主意。

试试这个:

typedef list::value_type pair;

PS。 'list'不是我放在全局命名空间中的类型名称的首选。将其放在您自己的命名空间中或称之为“MyList”。