gpt4 book ai didi

c++ - 有选择地禁用已检查的迭代器

转载 作者:可可西里 更新时间:2023-11-01 17:39:42 28 4
gpt4 key购买 nike

我正在编写一个相当复杂的应用程序,它大量使用了 STL 容器。该应用程序有一个相对简单的性能敏感部分,该部分迭代多个 std::map 并执行数千次。测试表明,在禁用已检查的迭代器(_SECURE_SCL 设置为 0)的情况下进行编译会导致整个程序的速度几乎提高 2 倍,这完全集中在本节中。

但是,我无法在 _SECURE_SCL 设置为 0 的情况下编译应用程序,因为需要链接在启用 _SECURE_SCL 的情况下编译的库并混合使用 _SECURE_SCL 设置导致问题。此外,我发现在整个应用程序中使用未经检查的迭代器相当愚蠢,因为所有性能敏感位都发生在一屏代码中。这无异于将婴儿连同洗澡水一起倒掉。

我有哪些选项可以选择性地将未经检查的迭代器用于性能敏感的代码/容器,同时保持与使用经过检查的迭代器编译的库的兼容性?

最佳答案

正如您已经发现的那样,您不能混合使用已检查/未检查迭代器的代码,因此为了在您的部分代码中使用它,您需要为该部分提供一个不需要传递任何容器的接口(interface)和迭代器。 (请注意,这扩展到 std::string。)
当然,您必须将该代码放入其自己的可执行文件 (DLL) 中。当然,这要求在该 API 之间没有太多来回调用。

为了安全起见,我什至会考虑将该部分放入具有 C 接口(interface)的 DLL 中。

关于c++ - 有选择地禁用已检查的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6423132/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com