std相关内容

如何使用类似`std::basic_istream<std::byte>`

这个问题旨在将 std::byte 与标准输入输出一起使用. 是否有计划将read(_bytes) 和write(_bytes) 的适当函数重载添加到basic_istream 的接口中> 和 basic_ostream 在未来的标准中?什么理由反对它?我知道应该保留 CharT* 重载.如何使用 std::byte?我目前在我的项目功能中定义 std::istream&读取(std::i ..
发布时间:2022-01-04 08:19:06 C/C++开发

std::bind 重载解析

以下代码运行正常 #include 使用命名空间标准;使用命名空间 std::placeholders;A级{int operator()( int i, int j ) { return i - j;}};一个;auto aBind = bind( &A::operator(), ref(a), _2, _1 ); 这个没有 #include 使用命名空间标准;使用命名空间 std::pl ..
发布时间:2022-01-02 13:27:35 C/C++开发

错误:'at' 没有依赖于模板参数的参数,因此必须提供 at 声明

这里的菜鸟 我正在尝试从 Bjarne Stroustrup 的“C++ 编程语言"中编译这段代码,但 CodeBlocks 一直向我抛出这个错误. 该代码是关于检查向量函数中保存的数组的范围. 代码如下: #include #include #include 使用命名空间标准;int i = 1000;模板类Vec:公共向量{上市:Vec() : vector() { ..
发布时间:2021-12-31 23:00:01 C/C++开发

g++ 4.7.2 中缺少 std::stoi 吗?

当我尝试使用 std::stoi 并尝试编译它时,我收到错误消息“stoi 不是 std 的成员".我正在从命令行使用 g++ 4.7.2,所以它不会是 IDE 错误,我按顺序排列了所有包含,并且 g++4.7.2 默认使用 c++11.如果有帮助,我的操作系统是 Ubuntu 12.10.有什么我没有配置的吗? #include #include 使用命名空间标准;int main(){字符串 ..
发布时间:2021-12-31 22:39:00 C/C++开发

ifstream 打开失败时如何获取错误消息

ifstream f;f.打开(文件名);如果 ( f.fail() ){//我需要这里的错误信息,比如“找不到文件"等.-//失败的原因} 如何以字符串形式获取错误信息? 解决方案 每个失败的系统调用都会更新 errno 值. 因此,您可以通过使用以下内容获得有关 ifstream 打开失败时会发生什么的更多信息: cerr 但是,由于每个系统调用都会更新全局errno值, ..
发布时间:2021-12-26 12:39:24 C/C++开发

如何在我的 dll 接口或 ABI 中使用标准库 (STL) 类?

在导出包含与 Visual Studio 警告 C4251 相关的 stl 类的类之前,存在一些问题:例如这个问题或这个问题.我已经阅读了 UnknownRoad 的精彩解释. 盲目禁用警告似乎有点危险,尽管它可能是一种选择.包装所有这些 std 类并导出它们也不是一个真正的选择.它毕竟被称为标准模板库......也就是说,人们想要为这些标准类提供一个接口. 如何在我的 dll 接口中 ..
发布时间:2021-12-25 15:44:20 C/C++开发

自定义 C++ 分配器的引人入胜的例子?

放弃 std::allocator 而支持自定义解决方案的真正好理由是什么?您是否遇到过对正确性、性能、可扩展性等绝对必要的情况?有什么非常聪明的例子吗? 自定义分配器一直是我不太需要的标准库功能.我只是想知道 SO 上是否有人可以提供一些令人信服的例子来证明它们的存在是合理的. 解决方案 正如我所提到的 在这里,我已经看到英特尔 TBB 的自定义 STL 分配器通过更改单个 显着 ..
发布时间:2021-12-24 16:41:02 C/C++开发

从 boost::shared_ptr 到 std::shared_ptr 的转换?

我有一个库,它在内部使用 Boost 的 shared_ptr 版本,并且只公开那些.对于我的应用程序,我想尽可能使用 std::shared_ptr .遗憾的是,这两种类型之间没有直接转换,因为引用计数的内容取决于实现. 有没有办法让 boost::shared_ptr 和 std::shared_ptr 共享同一个引用计数对象?或者至少从 Boost 版本中窃取 ref-count 而只 ..
发布时间:2021-12-24 15:14:31 C/C++开发

std::vector 或 boost::vector 线程安全吗?

我有多个线程同时在 std::vector 的共享对象上调用 push_back().std::vector 线程安全吗?还是我需要自己实现该机制以使其线程安全? 我想避免做额外的“锁定和释放"工作,因为我是图书馆用户而不是图书馆设计师.我希望为 vector 寻找现有的线程安全解决方案.boost::vector 怎么样,它是从 boost 1.48.0 开始新引入的.线程安全吗? 解决 ..
发布时间:2021-12-24 14:59:34 C/C++开发

如何在 C++0x 中组合哈希值?

C++0x 添加了 hash(...). 我找不到 hash_combine 函数,如 提升.实现这样的事情的最干净的方法是什么?也许,使用 C++0x xor_combine? 解决方案 好吧,就像 boost 人员那样做: template 内联 void hash_combine(std::size_t& 种子,const T& v){std::hash哈希器;种子^= ha ..
发布时间:2021-12-24 14:59:14 C/C++开发

std::function 的性能开销是多少?

我在论坛上听说使用 std::function 会导致性能下降.这是真的吗?如果是真的,是不是性能下降很大? 解决方案 您可以从 boost 的参考资料中找到信息:通过 boost::function 调用会产生多少开销? 和 性能 这并不能确定增强功能的“是或否".鉴于程序的要求,性能下降可能是可以接受的.通常情况下,程序的某些部分不是性能关键的.即便如此,它也可能是可以接受的 ..
发布时间:2021-12-24 14:58:46 C/C++开发

如何从捕获移动的 lambda 表达式创建 std::function?

我正在尝试从捕获移动的 lambda 表达式创建一个 std::function.请注意,我可以毫无问题地创建一个移动捕获 lambda 表达式;只有当我尝试将它包装在 std::function 中时,我才会收到错误. 例如: auto pi = std::make_unique(0);//这里没有问题!自动 foo = [q = std::move(pi)] {*q = 5;std:: ..
发布时间:2021-12-23 21:43:31 C/C++开发

尝试使用 std::get_time 解析 YYMMDD 并失败

我正在尝试这样做但失败了: std::istringstream ss("1212");ss >>std::get_time(&t, "%y%m");if (ss.fail())//每次! 这没问题: std::istringstream ss("12-12");ss >>std::get_time(&t, "%y-%m"); 知道我做错了什么吗?我还能用什么,因为 Windows 似乎没 ..
发布时间:2021-12-22 18:53:34 C/C++开发

C++ STL 映射:访问时间是 O(1) 吗?

键查找std::map O(1) 吗?我以为是,直到我想多了.它基于树实现,所以查找时间应该是 O(log N),对吗? 而且,是否有可能让 O(1) 查找字符串键,std::unordered_map 也许? 解决方案 std::map 是 O(log N)(容器大小的对数). 根据 C++11 标准中关于 std::map::operator [] 的第 23.4.4.3/ ..
发布时间:2021-12-22 08:32:16 C/C++开发