stdvector相关内容

超速矢量 push_back

当无法预测容量时,我正在尝试加速 vector::push_back 当保留可用时,向量 push_back 在容器的末尾写入新元素,然后移动结束标记.使用完所有reserve后,push_back可能会触发重新分配,这是一个缓慢的过程. 为了加快速度,为几个即将到来的 push_back 重新生成预留,而不会在空时重新分配.您认为此代码如何帮助实现该目标? #ifndef __VECT ..
发布时间:2021-08-30 19:14:10 C/C++开发

std::vector push_back 导致访问冲突

故事:我正在制作一个共享库,将 C 代码作为包装器暴露给在 VS 2008 中编译的 C++ 静态库,因此我与该编译器相关联.在我的库中,我正在尝试编写一个非常简单的字典来通过共享库边界传递数据.我不会传递实际的字典,只会传递处理程序并提供访问其成员的函数.字典只是键值对的 std::vector. 问题: 每次我尝试将键值对推回字典时,我的程序都会崩溃.这是一个独立的演示代码(一个新的 W ..

如何创建 emplace_back 方法?

我正在创建一个自定义的 ArrayList/Vector 类,但在创建 emplace_back 函数时遇到了麻烦.如何创建与 ArrayList 的“value_type 类"的构造函数相同的参数? 解决方案 emplace_back 和类似的函数(std::make_shared 等)不需要知道什么关于 value_type 他们正在尝试构建.这要归功于 C++11 中引入的参数包.> ..
发布时间:2021-08-30 19:14:05 C/C++开发

SIGNALSEGV(分段错误)矢量外推回方法

我正在使用 linux (WSL) 制作一个 shell.出于某种未知的原因,当我将一个结构体指针(我创建的)推回到一个向量中时,它会调用 SIGNALSEGV. 这些是有问题的代码的主要类, class TimeoutCommand : public BuiltInCommand {民众:布尔背景;std::string 行;int pid;int 持续时间;TimeoutCommand ..

为什么允许擦除 vector.end()?

今天我正在做一些代码,看起来像这样: vec.erase(std::remove_if(vec.begin(), vec.end(), )); 当上面的代码不应该擦除任何东西时,这意味着 std::remove_if 应该返回 vec.end(),当我收到大小减一的向量时,我感到非常惊讶:最后一个元素被擦除了.问题已通过将以上更改为: vec.erase(std:: ..
发布时间:2021-08-30 19:13:59 C/C++开发

在 C++ 中创建一个向量数组

我想创建一个大数据集的距离矩阵,并且只想存储足够“接近"的元素.代码是这样的 vector* D;D = (vector *) malloc(dim *sizeof(vector) ) ;for(i=0;i 这给了我分段错误.我想我没有正确定义向量数组.我该如何解决这个问题? 解决方案 在 C++ 中,您应该永远使用 malloc 分配对象(或对象数组).虽然 malloc 擅长分配内 ..
发布时间:2021-08-30 19:13:56 C/C++开发

std::bad alloc whit std::vector,Tic-Tac-Toe

我正在尝试实现我自己的 Tic-Tac-Toe 游戏并制作一棵树(数据结构),其中包含所有可能的移动(用于最小-最大算法). 在函数 Add_Match() 中,我收到此运行时错误: 在抛出 'std::bad_alloc' 实例后调用终止what(): std::bad_alloc` main() 有趣的部分(int Tic-Tac-Toe.cpp): if(victory(boar ..
发布时间:2021-08-30 19:13:50 C/C++开发

为什么不能保证向量的向量是连续的?(或者是吗?)

我知道 std::vector 元素在内存中是连续的. 那么为什么你不能期望包含其他向量的向量具有连续的总集合? 向量应该保证其封闭项的连续内存布局,如果这些封闭项也是向量,那么我希望最顶层向量的全部内容都在连续内存中. 但似乎在这个问题上存在一些关于这是否属实的争论.是否可以安全地依赖它?有些人似乎特意来实现这个,虽然我认为这是有保证的. 解决方案 vector of ..
发布时间:2021-08-30 19:13:44 C/C++开发

std::vector::data() 的状态是什么?

我刚刚意识到我一直在使用 std::vector::data() 出于与 std::string 的相似性,但一位同事指出它不是标准的. 显然 Gcc 实现了它,但是查看它的包含文件,我发现了以下评论: //_GLIBCXX_RESOLVE_LIB_DEFECTS//DR 464.建议标准容器中的新成员函数.//数据访问 我的问题是: 此方法是否已被其他编译器广泛实现? 它是否包 ..
发布时间:2021-08-30 19:13:41 其他开发

为什么 sort() 不起作用?

我把这个简单的程序读入了一个像“13 11 9 10"这样的字符串中.我想拆分字符串然后对它们进行排序.但是 sort() 似乎不起作用,有什么帮助吗?输入:13 11 9 10,输出:13 11 9 10谢谢! #include #include #include #include #include 使用命名空间标准;向量拆分(字符串 s){istringstream iss(s);向量结果; ..
发布时间:2021-08-30 19:13:38 C/C++开发

以下 std::vector 代码有效吗?

std::vectorvec;foo foo(...);断言(vec.size()== 0);vec.reserve(100);//我已经保留了 100 个元素vec[50] = foo;//但我还没有初始化它们中的任何一个//所以我分配到未初始化的内存? 上面的代码安全吗? 解决方案 无效.该向量没有元素,因此您无法访问其中的任何元素.您只是为 100 元素保留了空间(这意味着在插入超 ..
发布时间:2021-08-30 19:13:32 C/C++开发

在 C++ 中漂亮地打印 std::vector

如何漂亮地打印 std::vector?例如,如果我构造了一个 std::vector(6, 1),我可以运行它来获得像 {1 1 1 1 1 1}{1 1 1 1 1 1}在 C++ 中?它需要是通用的,因为大小和值可能会改变,所以 std::vector(4, 0) 将是 {0 0 0 0}. 解决方案 #include #include #include 模板std::ostream ..
发布时间:2021-08-30 19:13:29 C/C++开发

我可以重新解释 std::vector作为 std::vector不复制?

我有一个对 std::vector 的引用,我想将其用作接受 std::vector 的函数的参数.我可以在不复制的情况下做到这一点吗? 我有以下功能并且可以正常工作;但是我不确定是否真的发生了副本 - 有人可以帮助我理解这一点吗?是否可以使用 std::move 来避免复制或者它已经没有被复制? static void showDataBlock(bool usefold, bool u ..
发布时间:2021-08-30 19:13:23 C/C++开发

在没有 std_vector.i 的情况下实现对 std::vector 的支持

好的,我已经问了 2 个关于我的问题的问题,尽管答复确实很有帮助,但我无法找到解决问题的最佳解决方案.现在让我解释一下我的主要目标/问题. 由于某些限制,我无法在 swig 界面中使用 std_vector.i,但我需要使用 C++ 对象(字符串向量的向量)vector> 在 Python 中.我实现了一个解决方案,我将整个 vector> 到 Python“列表列表",其中我正在执行以下转 ..
发布时间:2021-08-30 19:13:16 其他开发