相等运算符在 VS2010 中不起作用

2024-05-18

示例代码:

std::hash_set<int> hs1; // also i try std::unordered_set<int> - same effect 
std::hash_set<int> hs2;

hs1.insert(15);
hs1.insert(20);

hs2.insert(20);
hs2.insert(15);

assert(hs1 == hs2);

hash_set 不按哈希函数定义的某种顺序存储元素...为什么? 请注意,此代码在 VS2008 中使用 stdext::hash_set 运行。


看起来两者的相等比较都被打破了hash_set and unordered_set在 Visual C++ 2010 中。

我使用标准语言为无序容器实现了一个朴素的相等函数马蒂厄引用 https://stackoverflow.com/questions/2772742/hash-set-equality-operator-doesnt-work-in-vs2010/2772880#2772880验证它是否是一个错误(只是为了确定):

template <typename UnorderedContainer>
bool are_equal(const UnorderedContainer& c1, const UnorderedContainer& c2)
{
    typedef typename UnorderedContainer::value_type Element;
    typedef typename UnorderedContainer::const_iterator Iterator;
    typedef std::pair<Iterator, Iterator> IteratorPair;

    if (c1.size() != c2.size())
        return false;

    for (Iterator it(c1.begin()); it != c1.end(); ++it)
    {
        IteratorPair er1(c1.equal_range(*it));
        IteratorPair er2(c2.equal_range(*it));

        if (std::distance(er1.first, er1.second) != 
            std::distance(er2.first, er2.second))
            return false;

        // A totally naive implementation of is_permutation:
        std::vector<Element> v1(er1.first, er1.second);
        std::vector<Element> v2(er2.first, er2.second);

        std::sort(v1.begin(), v1.end());
        std::sort(v2.begin(), v2.end());

        if (!std::equal(v1.begin(), v1.end(), v2.begin()))
            return false;
    }

    return true;
}

它返回的是hs1 and hs2从你的例子来看是平等的。 (如果您发现该代码中的错误,请告诉我;我并没有真正对其进行广泛测试......)

我将在 Microsoft Connect 上提交缺陷报告。

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

相等运算符在 VS2010 中不起作用 的相关文章

随机推荐

  • C++ 使用 Windows 命名管道

    由于某种原因 桅杆和从属装置都失败了 但是我可以找到任何关于它们如何工作的好例子 所以我不确定我哪里出了问题 在 ConnectNamedPipe 之后 主设备永远不会退出 WaitForSingleObject 并且从设备在第一个 boo
  • 为什么图的 C++ 数据结构隐藏连续的整数索引?

    有向图和无向图的数据结构至关重要 众所周知且广泛使用的实现 例如Boost图库 http www boost org doc libs 1 56 0 libs graph doc table of contents html and Lem
  • Parse.com 和 Facebook 登录,运行无限循环

    我将 Parse 和 Facebook iOS SDK 都更新到了最新版本 当我尝试使用 Facebook 登录时 我的应用程序崩溃了 从调试器中我可以看到它正在无限循环中调用 3 4 个方法 我的登录代码如下所示 void openSes
  • IntelliJ - 以 Sudo 身份运行程序

    使用 Java 和 IntelliJ 在 OSX 上开发程序 处理网络套接字和 ICMP 因此 该程序需要在 OSX 上以 root 或 sudo 身份运行 程序可以在 sudo 下从 IntelliJ 外部的终端窗口正常运行 但是 我想从
  • 赋值运算符“=”是原子的吗?

    我正在使用全局变量实现线程间通信 global var volatile bool is true true thread 1 void thread 1 while 1 int rint rand 10 if is true cout l
  • 自定义查找器与关联定义中的匹配?

    我有两个模型 联系人和具有BelongsToMany 关联的组 我只想获取联系人可以访问的组 为此 我有一个自定义查找器 public function findAccessible Query query array options re
  • bean 范围的真实用例

    我正在学习 Spring 我了解了 bean 范围 它们每个的真实世界用例是什么 我无法获得任何帮助 请帮助何时在 Spring 中使用 Singleton Prototype Request 和 Session 作用域 辛格尔顿 它为每个
  • 无法创建复合索引,停留在 INSTALLED

    我无法创建索引 我的 Gremlin 代码如下 usernameProperty mgmt getPropertyKey username usernameIndex mgmt buildIndex byUsernameUnique Ver
  • 已做出回应

    我有一个取消按钮 用于刷新值 现在我已将它们转换为刷新或重新加载页面并移至只读页面 因此更改了取消按钮来调用这样的函数 function chkArea var url
  • NPM 无法在 Windows 上安装“truffle”

    我正在尝试使用 npm 安装 truffle 但我不熟悉 NodeJS 并且不明白为什么 npm 不会安装它 我尝试npm install g truffle在具有管理员权限的 Powershell 中 经过几行输出后 我收到以下错误消息块
  • Chai:是否期待错误取决于参数[重复]

    这个问题在这里已经有答案了 我一直在尝试编写一个处理错误的函数文本 如果它是有效错误 则抛出该错误 但如果不是 则不会抛出任何内容 问题是我在使用时似乎无法设置参数 expect handleError to throw Error 理想的
  • 简单的 Linq 查询对同一个表有重复的连接?

    来自 Julia Lerman 的新实体框架书中的示例 我有一个包含两个表的数据库 联系人和地址 Contact 表有一个 ContactID int 以及名字 姓氏等 Address 表有一个 ContactID 以及城市 州 邮政编码等
  • 使用 web.config 将除一页之外的 HTTP 重定向到 HTTPS

    我想让所有页面从 HTTP 重定向到 HTTPS 除了根目录中的一个页面 pagename php 该页面需要作为 HTTP 工作 需要重定向回 HTTP 我目前有以下代码可以从 none www 重定向到 www 以及从 HTTP 重定向
  • 从命令行调试 iOS 应用程序构建

    我正在通过命令行构建 iOS 应用程序 但在调试它时遇到问题 如果我使用 XCode 进行构建 它会让我在设备上 构建和调试 而不会出现任何问题 但现在 我不知道如何使用 gdb 在设备上启动它并逐步执行它 如果我尝试 添加自定义目标 可执
  • 如何将类型设置为 vue slot props Typescript

    我正在尝试在插槽道具上设置类型以在表格组件中进行处理 如图所示 我也一直在尝试 body item UserItem 但这只是重命名参数 body
  • 从 iOS 应用程序内的 Junos Pulse 获取用户凭据

    我正在通过 Junos Pulse 在 iPad 中建立 VPN 连接 以进入我组织的 Intranet 谁能告诉我是否有任何 iOS api 或 SDK 可用于获取在 iOS 应用程序内的 Junos pulse 中输入的用户凭据 Jun
  • 如何使用 Protractor 检查某个元素是否不可点击?

    测试一个元素是否很简单is可使用量角器点击 但我一直在挠头试图弄清楚如何检查元素是否not可点击 我尝试将 click 函数包装在 try catch 中 这样当尝试单击时抛出错误时 它应该捕获它并让测试通过 然而 这不起作用 这是我执行检
  • 使 Visual Studio 设计器忽略公共属性

    我有一个带有公共属性的 UserControl 使用以下属性 Browsable false DesignerSerializationVisibility DesignerSerializationVisibility Hidden 我尝
  • Windows Server 2012 中的 Oracle 11gR2 安装

    安装时甲骨文11gr2它给出了错误 INS 13001 环境不符合最低要求 我查看了 Oracle 网站上给出的先决条件 但似乎一切都在那里 生成了这个日志文件 但我无法知道它在寻找什么 sing paramFile E win64 11g
  • 相等运算符在 VS2010 中不起作用

    示例代码 std hash set