_Pairib':不是'std :: map,std :: allocator >>的成员

时间:2019-09-23 18:29:38

标签: c++

我最近更新了Visual Studio,现在遇到了许多与_Pairib相关的错误。有谁知道发生了什么事以及我该如何解决?

错误

C2039    '_Pairib': is not a member of 'std::map<int,std::string,std::less<int>,std::allocator<std::pair<const
_Kty,_Ty>>>'
        with
        [
            _Kty=int,
            _Ty=std::string
        ]
Sample  C:\Users\Kevin\source\repos\Sample\Sample\Sample.cpp    12

示例代码

int main()
{
    std::map<int, std::string> test_map;

    std::map<int, std::string>::_Pairib res = test_map.insert(std::map<int, std::string>::value_type(0, "Test"));
    if (!res.second)
    {

    }
}

1 个答案:

答案 0 :(得分:2)

_Pairib是一个内部实现细节,不应在您的代码中使用。最简单的解决方法是将所有这些替换为auto

auto res = test_map.insert(std::map<int, std::string>::value_type(0, "Test"));

但是如果您需要指定类型,则它是std::pair,第一个元素是迭代器,第二个元素是bool。 (std::pair<iterator,bool>,其中iteratorstd::map<int, std::string>::iterator。)