std相关内容

std::string 内存泄漏

我有这个类 AppController 和函数 connectPlayer: /* AppController.h */类 AppController{//其他一些声明...私人的:静态常量字符串标签;};/* AppController.cpp */#include "AppController.h"const string AppController::TAG = "AppControlle ..
发布时间:2021-08-30 18:58:41 C/C++开发

容器模板参数的 value_type

在他今年 Going Native 的主题演讲中 C++ 的本质(转至 40:30)Bjarne Stroustrup 给出了以下代码示例: template向量*>find_all(C& cont, V v){向量*>资源;for (auto& x : 续)如果 (x == v)res.push_back(&x)返回资源;} 此函数用于 ..
发布时间:2021-08-30 18:58:38 C/C++开发

如何计算 C++ std::map 中不同值的数量

我有一个 C++ 映射声明如下 std::map字图= {{ "是", 6 },{“的",5},{ "帽子", 9 },{ “在6点钟 }}; 我想知道如何找到 wordMap 中存在的 int 不同值的数量.在此示例中,我希望输出为 3,因为我有 3 个不同的不同值 (6,5,9). 解决方案 尝试使用 std::set 进行计数: std::set英石;for (const au ..
发布时间:2021-08-30 18:58:35 C/C++开发

如何在成功或失败的情况下返回 std::copy 的值?

我正在使用 std::copy 将 std::deque 中的对象复制到文件中.代码工作正常,但我需要检查复制是否成功,因此我需要设置标志或抛出异常. 我用谷歌搜索但找不到如何检查 std::copy 是否已成功将值复制到文件中的解决方案. 有人可以点亮它吗. 解决方案 如果写入文件失败,则文件流的错误标志将被设置 - 您可以在复制后检查这些,或调用 exceptions 成员 ..
发布时间:2021-08-30 18:58:32 C/C++开发

从 std::type_info 检索数据类型的大小

在 C++03 中,当您使用运算符 typeid 时,type_info 对象. 是否可以仅根据此结果检索给定类型的大小,例如由 sizeof 返回 运算符? 例如: std::type_info info = typeid(int);int intSize = sizeof(int);int intSize2 = info.getSize();//不存在! 问题是我们使用第三方多 ..
发布时间:2021-08-30 18:58:29 C/C++开发

Valgrind 未显示错误使用 c_str() 的无效内存访问

想象一下这样的代码: 字符串 f(){字符串 r = "ab";返回 r;}int main() {const char *c = f().c_str();printf("%s.\n", c);返回0;} 这段代码可能会崩溃,对吧?因为 c 指向的那个字符串被破坏了.但是通过 Valgrind 运行它不会显示任何无效的内存访问.为什么?我知道 Valgrind 无法检查堆栈,但“ab"实际上位 ..
发布时间:2021-08-30 18:58:26 C/C++开发

使用 std::accumulate 计算平均值失败

我正在尝试使用以下代码(使用 g++ mean.cc -std=c++0x 编译)计算双精度向量的平均值: //mean.cc#include #include #include 结构均值{无符号整数 n;均值(无符号整数 n):n(n){}double operator()(double sum, double x) {返回总和 + x/n;}};int主(){std::vectorv = { ..
发布时间:2021-08-30 18:58:23 C/C++开发

为什么我必须在这里清除 std::stringstream ?

我写了一个简短的测试程序,看看我是否可以重复使用 stringstream 附加到一个字符串. 在第一个版本中,我得到了 Output1,但我真的不明白为什么 s1 保持为空.我发现我必须做 ss.clear() 然后在 Output2 中得到预期的结果.任何人都可以解释为什么它在没有明确的情况下不起作用?我原以为,如果我反复输入数字并将它们取回字符串,我应该总是得到数字.我不确定是否附加了 ..
发布时间:2021-08-30 18:58:20 C/C++开发

如何结合 std::copy_if 和 std::transform?

考虑这个代码片段:在第一种类型 T1 的一个容器上迭代以创建第二种类型 T2 的第二个容器,应用转换函数 T1->T2 但仅用于验证谓词的 T1 元素 (T1 -> bool ) (在以下示例中为奇数). std::vectormyIntVector;myIntVector.push_back(10);myIntVector.push_back(15);myIntVector.push_b ..
发布时间:2021-08-30 18:58:17 C/C++开发

确定 std::istream 长度的更好方法?

是否有比以下更好的方法来确定 std::istream 的长度: std::istream* pcStream = GetSomeStream();pcStream->seekg(0, ios::end);unsigned int uiLength = pcStream->tellg(); 必须寻找流的末尾然后返回原始位置似乎真的很浪费,特别是如果流可能是某些慢速媒体(如 CD 或 DVD)上 ..
发布时间:2021-08-30 18:58:14 C/C++开发

为什么 std::span 缺少比较运算符?

std::span 不是被设计为对 std::vector/std::array/普通数组之类的?它不应该在其 API 中也包含比较运算符,以与它们保持一致吗?排除背后的原因是什么? 注意:通过比较运算符,我指的是完整集合 ( ..
发布时间:2021-08-30 18:58:11 C/C++开发

用于转换 std::vectors 的简单模板函数——“非法使用这种类型作为表达式"

我编写了一个将 std::vectors 从一种类型转换为另一种类型的快速方法: 模板向量 BConvertSTDVector_AToB(vector vector){向量 B转换向量;for(unsigned int i= 0; i 但编译器在左括号后的行中出现“错误 C2275:'B':非法使用此类型作为表达式"的错误.起初我以为在其他地方以某种方式定义了“B",但是更改两个模板类型名称会 ..
发布时间:2021-08-30 18:58:08 C/C++开发

标头中的 std::vector 大小

我有一个关于 std::vector 的小问题.在 main.h 中,我尝试制作固定大小的 int 向量 std::vector富(7); 但是 g++ 给出了这个错误: ../test/main.h:21:26: 错误:数字常量前的预期标识符std::vector富(7);../main/main.h:21:26: 错误:在数字常量之前应为“,"或“..." 如何创建固定大小长度的私有向 ..
发布时间:2021-08-30 18:58:00 C/C++开发

如何理解 C++ std::setw 的不一致行为?

给定以下代码: /*格式化输出**目标:练习使用 cout 将输出格式化到控制台**在三列中打印变量:**整数、浮点数、双数*/#include #include 使用命名空间标准;int main(){int a = 45;浮动 b = 45.323;双 c = 45.5468;int aa = a + 9;浮动 bb = b + 9;双cc = c + 9;int aaa = aa + 9; ..
发布时间:2021-08-30 18:57:55 C/C++开发

一个关于 std::add_pointer 实现的问题

来自 std::add_pointer 可能的实现 命名空间细节{模板struct type_identity { 使用类型 = T;};//或使用 std::type_identity (C++20 起)模板自动 try_add_pointer(int) ->type_identity::type*>;模板自动 try_add_pointer(...) ->type_identity;} ..
发布时间:2021-08-30 18:57:52 C/C++开发

防止 std::move on object?

我正在尝试创建一个非空的 unique_ptr. template 类 unique_ref {民众:模板unique_ref(Types&&... Args) { mPtr = std::make_unique(std::forward(Args)...);}T* release() &&{ 返回 mPtr.release();}T* release() &= 删除;私人的:s ..
发布时间:2021-08-30 18:57:49 C/C++开发

为什么打印时不保留顺序,先用cerr然后用cout?

我有带有 Xubuntu 14.04 的 g++ 4.8.4 版编译器.在我的 OpenCV 代码(用 Eclipse CDT 编写)中,我连续写了以下三行: /* 这里有一些代码*/cerr 结果如下: 按一个键继续...未找到匹配项.误报数:1/*有一个空行*/ 为什么这两行的顺序在执行时发生了变化?前几行根本没有并行代码,但它们似乎像并行(同时)一样工作. 我知道 cerr 没 ..
发布时间:2021-08-30 18:57:43 C/C++开发