std相关内容
我最近买了一台新的 MacBook,我在上面转移了我的旧会话.从那时起,在我升级到 10.13 之后,我无法让 clang 编译任何内容,包括仅 iostream. 鉴于这个程序: #include int main(void){std::cout
..
这个问题旨在将 std::byte 与标准输入输出一起使用. 是否有计划将read(_bytes) 和write(_bytes) 的适当函数重载添加到basic_istream 的接口中> 和 basic_ostream 在未来的标准中?什么理由反对它?我知道应该保留 CharT* 重载.如何使用 std::byte?我目前在我的项目功能中定义 std::istream&读取(std::i
..
以下代码运行正常 #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
..
这里的菜鸟 我正在尝试从 Bjarne Stroustrup 的“C++ 编程语言"中编译这段代码,但 CodeBlocks 一直向我抛出这个错误. 该代码是关于检查向量函数中保存的数组的范围. 代码如下: #include #include #include 使用命名空间标准;int i = 1000;模板类Vec:公共向量{上市:Vec() : vector() {
..
当我尝试使用 std::stoi 并尝试编译它时,我收到错误消息“stoi 不是 std 的成员".我正在从命令行使用 g++ 4.7.2,所以它不会是 IDE 错误,我按顺序排列了所有包含,并且 g++4.7.2 默认使用 c++11.如果有帮助,我的操作系统是 Ubuntu 12.10.有什么我没有配置的吗? #include #include 使用命名空间标准;int main(){字符串
..
我正在尝试使用 g++ 和 -std=c++11 或 c++0x 标志进行编译. 但是,我收到此错误 cc1plus:错误:无法识别的命令行选项“-std=c++11" g++ --version g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)版权所有 (C) 2006 Free Software Foundation, Inc.这是免费软件;请
..
我使用的是不包含 boost::timer 的 boost 1.46,还有什么其他方法可以为我的函数计时. 我目前正在这样做: time_t now = time(0);time_t after = time(0);cout
..
请看下面的代码 int main(){cout
..
ifstream f;f.打开(文件名);如果 ( f.fail() ){//我需要这里的错误信息,比如“找不到文件"等.-//失败的原因} 如何以字符串形式获取错误信息? 解决方案 每个失败的系统调用都会更新 errno 值. 因此,您可以通过使用以下内容获得有关 ifstream 打开失败时会发生什么的更多信息: cerr 但是,由于每个系统调用都会更新全局errno值,
..
在导出包含与 Visual Studio 警告 C4251 相关的 stl 类的类之前,存在一些问题:例如这个问题或这个问题.我已经阅读了 UnknownRoad 的精彩解释. 盲目禁用警告似乎有点危险,尽管它可能是一种选择.包装所有这些 std 类并导出它们也不是一个真正的选择.它毕竟被称为标准模板库......也就是说,人们想要为这些标准类提供一个接口. 如何在我的 dll 接口中
..
放弃 std::allocator 而支持自定义解决方案的真正好理由是什么?您是否遇到过对正确性、性能、可扩展性等绝对必要的情况?有什么非常聪明的例子吗? 自定义分配器一直是我不太需要的标准库功能.我只是想知道 SO 上是否有人可以提供一些令人信服的例子来证明它们的存在是合理的. 解决方案 正如我所提到的 在这里,我已经看到英特尔 TBB 的自定义 STL 分配器通过更改单个 显着
..
我想尽可能地用标准 C++ 中的等价物替换外部库(如 boost),如果它们存在并且有可能,以尽量减少依赖性,因此我想知道是否存在转换 boost 的安全方法::system::error_code 到 std::error_code.伪代码示例: void func(const std::error_code & err){如果(错误){//错误} 别的 {//成功}}boost::syste
..
我有一个库,它在内部使用 Boost 的 shared_ptr 版本,并且只公开那些.对于我的应用程序,我想尽可能使用 std::shared_ptr .遗憾的是,这两种类型之间没有直接转换,因为引用计数的内容取决于实现. 有没有办法让 boost::shared_ptr 和 std::shared_ptr 共享同一个引用计数对象?或者至少从 Boost 版本中窃取 ref-count 而只
..
我有多个线程同时在 std::vector 的共享对象上调用 push_back().std::vector 线程安全吗?还是我需要自己实现该机制以使其线程安全? 我想避免做额外的“锁定和释放"工作,因为我是图书馆用户而不是图书馆设计师.我希望为 vector 寻找现有的线程安全解决方案.boost::vector 怎么样,它是从 boost 1.48.0 开始新引入的.线程安全吗? 解决
..
C++0x 添加了 hash(...). 我找不到 hash_combine 函数,如 提升.实现这样的事情的最干净的方法是什么?也许,使用 C++0x xor_combine? 解决方案 好吧,就像 boost 人员那样做: template 内联 void hash_combine(std::size_t& 种子,const T& v){std::hash哈希器;种子^= ha
..
我在论坛上听说使用 std::function 会导致性能下降.这是真的吗?如果是真的,是不是性能下降很大? 解决方案 您可以从 boost 的参考资料中找到信息:通过 boost::function 调用会产生多少开销? 和 性能 这并不能确定增强功能的“是或否".鉴于程序的要求,性能下降可能是可以接受的.通常情况下,程序的某些部分不是性能关键的.即便如此,它也可能是可以接受的
..
我正在尝试从捕获移动的 lambda 表达式创建一个 std::function.请注意,我可以毫无问题地创建一个移动捕获 lambda 表达式;只有当我尝试将它包装在 std::function 中时,我才会收到错误. 例如: auto pi = std::make_unique(0);//这里没有问题!自动 foo = [q = std::move(pi)] {*q = 5;std::
..
使用具有两个字段和一对字段的结构在内存分配和效率方面有什么区别? 解决方案 std::pair 提供预先编写的构造函数和比较运算符.这也允许它们存储在 std::map 之类的容器中,而无需编写,例如,复制构造函数或通过 operator
..
我正在尝试这样做但失败了: 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 似乎没
..
键查找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/
..