cost 110 ms
std::deque 的底层数据结构是什么,它的迭代器是如何工作的? - What is underlying data structure of std::deque and how does it's iterator work?

我知道 std::deque 具有不同的连续 memory 块,并且通过插入或擦除双端队列的中间部分使迭代器无效。 除此之外,如果我插入到双端队列元素的末尾,则迭代器无效但引用有效。 双端队列的迭代器还有其他一些不直观的行为。 请参阅下面的链接。 在此处输入链接描述我很好奇为什么迭代器应该那样工作 ...

是否有类似于 `std::deque` 但具有自定义块大小和更好性能的容器? - Is there a container similar to `std::deque` but with custom block size and better performance?

与std::vector相比,在访问随机位置的元素时, std::deque的缺点是性能较慢,而且存储数据的 memory 块具有预定义的固定大小。 是否有替代(甚至在 STL 之外)容器类允许: 在构造函数中设置所有块的块大小,或为每个块设置不同的块大小。 防止大多数索引访问必须执行两次指针取消 ...

tbb::concurrent_bounded_queue 中使用的内部容器是什么? - What is the internal container used in tbb::concurrent_bounded_queue?

我知道 std::queue 默认使用 std::deque 作为其内部容器。 我找不到 TBB 的相同信息。 我有一个遗留的多线程应用程序,它当前使用围绕 std::queue<void*, std::list<void*>> 的线程安全包装器来存储相对较大的对象(58 ...

是否可以添加到 C++ 中空双端队列的迭代器? - Should it be possible to add to an iterator of an empty deque in C++?

以下是导致问题的示例: 如果双端队列以前从未包含任何元素,则添加到空双端队列的迭代器似乎是一个问题。 我很好奇这是否是 STL 中的错误,或者我只是以导致未定义行为的方式使用它。 我只在使用 Xcode(GUI 和命令行)编译时遇到这个问题。 我也在 Linux 上使用 GCC 版本 6.2.0 ...

在调用 pop_back 之前,我是否需要在 std::deque 中删除/释放动态分配的数据(例如 bytearray 或 std::vector)? - Do I need to delete/free dynamically allocated data (e.g. bytearray or std::vector) within a std::deque before I can call pop_back?

据我了解 std::deque 的 push_back() 复制我输入的数据。因此,当我引用动态数据(例如动态字节数组或 std::vector)时,它只复制对它的引用. 现在我尝试了解是否必须在 std::deque 的 pop_back() 之前删除/释放动态分配的数据? 给出 C++11。 ...

推送到std :: deque时如何检测动态内存分配失败? - Howto detect a fail of dynamic memory allocation when pushing to std::deque?

我正在寻找一种技术来检测是否可以推送/插入/等。 std :: deque的其他元素。 它应该为我执行动态内存分配,但是当我的内存已满时会发生什么? 通过使用malloc(),我将收到一个Nullpointer,但是当使用std :: deque时如何检测内存不足的情况? ...

定期清理地图 - Clean map periodically

我有一个A级管理地图。 当我在地图中添加很多元素时,我想通过删除首次插入的元素来定期清理它。 当我尝试从deque中弹出元素时,以下代码崩溃了: 上面的代码是否有意义? 如果是的话,错误可能在哪里? 如果没有,我该如何定期清理地图? ...

C ++中的双端队列和向量摘要(使用迭代器?) - Abstract over deque and vector in C++ (using iterators?)

因此,我正在编写一个图形遍历例程,并且希望能够通过选择FIFO或LIFO邻居遍历策略将其转换为深度优先或宽度优先的遍历。 实际上,这意味着我需要在std::deque和std::vector (或堆栈)上抽象“入队”和“出队”操作。 通过具有几个专门用于这些容器的模板功能,可以很容易地做 ...

如何在目标C中实现循环缓冲区以实现高性能 - How to implement circular buffer in Objective C for high performance

我们想每秒多次将双精度数组添加到目标C中的循环缓冲区。 我们目前正在使用嵌套在另一个NSMutableArray(2D数组)中的NSMutableArray。 这工作正常,但对于我们的需求而言太慢了。 我们想每秒多次添加到循环缓冲区中。 当我们执行此操作并进行性能监视时,我们看到 ...

为什么std :: queue使用std :: dequeue作为底层默认容器? - Why does std::queue use std::dequeue as underlying default container?

正如在cplusplus.com上读到的那样 , std::queue实现如下: 队列实现为容器适配器,它是使用特定容器类的封装对象作为其底层容器的类,提供一组特定的成员函数来访问其元素。 元素被推入特定容器的“后面”并从其“前面”弹出。 底层容器可以是标准容器类模板之一或其 ...

从std :: deque线程对emplace_back()和operator []()的并发调用是否安全? - Are concurrent calls to emplace_back() and operator[]() from std::deque thread safe?

emplace_back()文档的摘录: 迭代器有效性 与此容器相关的所有迭代器都是无效的,但指针和引用仍然有效,指的是它们在调用之前引用的相同元素。 数据竞赛 容器已修改。 调用不访问任何包含的元素:同时访问或修改它们是安全的(尽管 ...

避免非托管C ++,C ++ / CLI和C#代码之间的std :: deque迭代器不可解除错误 - Avoiding std::deque iterator not dereferencable error between unmanaged c++, c++/cli and c# code

我有一个VS2015解决方案,其中包括不受管理的c ++代码(以执行一些CPU密集型模拟计算),围绕此代码的c ++ / cli包装器以及ac#项目,该项目通过DLL调用c ++ / cli包装器。 下面的示例是完整代码的简化版本,对于预先提供的代码数量感到抱歉,但是对于所发生的情况的完整了解 ...


 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM