我无法理解错误。我正在使用一个简单的向量映射(由字符串键入并存储字符串向量):
typedef std::map<std::string, std::vector<std::string> > TRouteMarkets;
以下代码(精简),
void CFoo::Bar(const char* route, const char* market)
{
// ...
TRouteMarkets::key_type key(route);
TRouteMarkets::mapped_type mapped();
TRouteMarkets::value_type pair(key, mapped);
// ...
}
产生以下错误:
“Foo.cc”,第 518 行:错误:找不到匹配 std::pair<const std::string, std::vector<std::string>>::pair(const std::string, std CFoo::Bar(const char*, const char*) 中需要 ::vector<std::string>())。
但是()
从映射中删除,即
TRouteMarkets::mapped_type mapped;
修复错误。为什么?在这两种情况下都不mapped
是字符串的空向量吗?