无法在 Mac 上访问 std 向量迭代器 _Ptr

2024-02-10

在 Visual Studio 上,这段代码就像一个魅力:

auto child = node.childs.begin();
    while (child != node.childs.end()) {
        vector<int> siblings;
        for (auto it : node.childs){
            if (it != *child._Ptr)siblings.push_back( it );
        }
        if (CheckSomething( tree, *child._Ptr, siblings ) > 0) {
            //delete that child
            child = node.childs.erase( child );
        }
        else ++child;
    }

但在 XCode 上使用相同的代码时,我收到了诸如 _Ptr is not exention? 之类的错误?不是具有相同结构的同一个 std 库吗?为什么会发生这种情况?

File.cpp:1745:22: No member named '_Ptr' in 'std::__1::__wrap_iter<int *>'

提前致谢


该规范没有定义这样的成员变量。_Ptr是特定于实现的(在本例中是特定于 MSVC 的)成员变量,在其他实现上可能存在也可能不存在。

通常,以下划线开头的名称指的是特定于实现的成员。如果您希望代码可移植或在编译器版本之间不中断,请不要访问这些内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在 Mac 上访问 std 向量迭代器 _Ptr 的相关文章

随机推荐