【发布时间】:2011-04-18 08:30:15
【问题描述】:
我声明一个字符串映射到一对如下:
std::map<std::wstring,
std::pair<std::pair<long, long>,
std::pair<long, long>>> reference;
我将其初始化为:
reference.insert(L"First",
std::pair<std::pair<long, long>,
std::pair<long, long>>(std::pair<long, long>(-1, -1),
std::pair<long, long>(0, 0)));
但是,Visual C++ 给我错误“C2664,没有构造函数可以采用源类型,或者构造函数重载决议不明确”。
我是使用模板和 STL 的新手,我不知道我做错了什么。
【问题讨论】:
-
请使用 typedef 和
std::make_pair使其清晰易读。 -
我对其进行了重新格式化,使其位更易于阅读。
-
除了嵌套所有这些
std::pair之外,你不能切换到使用std::tr1::tuple吗? Boost 也有一个元组实现。 -
哟哟道格。听说你喜欢std::pair,所以我在你的....中放了一个std::pair。
-
据我了解,元组并非由所有供应商实现。在转到 Boost 之前,我会尝试先学习 STL。