标签: deque

C++ 双端队列抛出段错误

我有一个项目中的一些代码似乎不起作用。

我正在尝试创建一个双端队列(结构体),它是类的静态成员。骨架/基本代码如下(我保留了所有数据类型 - my_typedef_fn 是通过 typedef-ing 函数指针获得的数据类型):

1.h文件:

class A {
    struct Bstruct {
        char * b_name;
        my_typedef_fn b_func;
    }
    static std::deque<Bstruct> a_deque;
    static void func();
}
Run Code Online (Sandbox Code Playgroud)

1.cpp文件:

std::deque<A::Bstruct> A::a_deque;
void A::func(char * name, my_typedef_fn fn) {
    a_deque.push_front((Bstruct) {name, fn} ); // <<<< segfault !
} 
Run Code Online (Sandbox Code Playgroud)

根据我的理解 - .h 文件只是声明内容(像往常一样) - .cpp 中的第一行初始化静态成员 a_deque - 函数 func 使用 push_back 将内容添加到双端队列

但我在调用 push_front 的行出现分段错误(使用 gdb 发现了这一点)。

另外,当我在 push_front 之前打印 a_deque.size() 时,我在 SEGFAULT 之前得到 4294967264 当我使用 for 循环计算双端队列中的元素数量时:

int counter = 0 …
Run Code Online (Sandbox Code Playgroud)

c++ segmentation-fault deque

2
推荐指数
1
解决办法
3074
查看次数

ConcurrentLinkedDeque 与 ArrayDeque

我知道它们两者之间的基本区别是 ConcurrentLinkedDeque 可以在多线程应用程序中使用。

任何人都可以给我一个实际的例子,如果错误使用它会如何影响应用程序的性能,在哪种情况下我应该使用 ConcurrentLinkedDeque 以及何时使用 ArrayDeque。

java deque arraydeque

2
推荐指数
1
解决办法
2854
查看次数

双端队列(时间复杂度)

访问 deque[0]、deque[中间某处] 和 deque[-1] 的时间复杂度是多少?

python deque data-structures

2
推荐指数
1
解决办法
449
查看次数

为什么在一个大的std :: list上迭代这么慢?

正如标题所暗示的那样,我遇到了一个我的程序问题,我使用std :: list作为堆栈,并迭代列表中的所有元素.当名单变得非常大时,该计划花了太长时间.

有没有人对此有一个很好的解释?是一些堆栈/缓存行为?

(解决了问题,将列表更改为std :: vector和std :: deque(顺便说一下,这是一个惊人的数据结构),所有内容突然变得更快)

编辑:我不是一个傻瓜,我不访问列表中间的元素.我对列表做的唯一事情就是在结尾处开始删除/添加元素并迭代列表中的所有元素.而且我总是使用迭代器迭代列表.

c++ runtime list std deque

1
推荐指数
1
解决办法
5999
查看次数

C# - Java的Deque

在Java中,有一个名为Deque的类,我想在.NET(C#)中找到类似的东西.

我之所以需要这个,是因为我需要查看集合中的最后一项,然后将集合中的第一项出列.

谢谢,AJ拉文迪兰.

c# deque

1
推荐指数
2
解决办法
4315
查看次数

stl :: deque的insert(loc,val) - deque结尾与其他位置的不一致行为?

使用http://www.cppreference.com/wiki/stl/deque/insert作为参考,我在某些位置将值插入到双端队列中.

例如,如果deque A是:

a, b, d, e, g
Run Code Online (Sandbox Code Playgroud)

使用指向d的迭代器,我可以:

A.insert(iter, c);    // insert val c before loc iter
//deque is now    a, b, c, d, e, g
Run Code Online (Sandbox Code Playgroud)

并且iter仍然指向d.但是,当iter指向g时,最后一个元素:

A.insert(iter, f);
//deque is now    a, b, c, d, e, f, g
Run Code Online (Sandbox Code Playgroud)

但它现在指向f !!

我目前的解决方法是:

iter = A.insert(loc, val);  // point iterator to element that was inserted before loc
iter++;                     // point iter back to loc
Run Code Online (Sandbox Code Playgroud)

我没有再测试过这个或者任何东西,花了这么多时间跟踪一个错误,只是为了发现插入()在所有地方的stl中的不一致行为很烦人.

与其他任何位置相比,为什么insert()在最后表现不同?还是我做错了什么?

c++ insert deque undefined-behavior

1
推荐指数
1
解决办法
355
查看次数

std :: deque内存使用

我已经实现了一个简单的统计引擎,使用deque返回滚动均值和方差,以提供数据队列.

deque由许多条目构成,这些条目等于滚动值的数量.

当新值到达时,最前面的值会弹出前面,而新值会被推到后面.

我需要确保这不会在内存中增长,因为它预计会在很长一段时间内作为后台任务运行.

deque是否在使用中的堆上分配?有没有可用于修复尺寸的标志?

我在RHEL 5.3上使用G ++ 4.1.2

c++ memory stl deque

1
推荐指数
1
解决办法
5448
查看次数

语法错误open(logPath,'r')为fh:

with open(logPath, 'r') as fh:
    for line in TailDeque(fh, 20):
        gamethread.delayed(0, show_recentlyCommands, (userid, text))   
Run Code Online (Sandbox Code Playgroud)

我总是得到一个错误的行 with open(logPath, 'r') as fh:

我正在使用Python 2.5并使用TailDeque.

python deque python-2.5

1
推荐指数
1
解决办法
75
查看次数

警告"C++需要所有声明的类型说明符"映射

我在xcode中运行此代码.为什么我的编译器继续抱怨地图分配

#include <iostream>
#include <map>
#include <deque>
using namespace std;

map<int,deque<int>> bucket;
deque<int> A{3,2,1};
deque<int> B;
deque<int> C;


bucket[1] = A;//Warning "C++ requires a type specifier for all declaration
bucket[2] = B;//Warning "C++ requires a type specifier for all declaration
bucket[3] = C;//Warning "C++ requires a type specifier for all declaration

int main() {

    for (auto it:bucket)
    {
        cout << it.first << "::";
        for (auto di = it.second.begin(); di != it.second.end(); di++)
        {
            cout << "=>" << *di;
        }
        cout …
Run Code Online (Sandbox Code Playgroud)

c++ dictionary stl deque

1
推荐指数
1
解决办法
1203
查看次数

为什么C++已经有队列和堆栈,因为它已经有deque?

我想知道为什么C++有队列和堆栈,因为它已经有deque.

似乎堆栈/队列的运行时和使用deque来模拟堆栈/队列是相同的.此外,deque支持修饰符,如擦除,迭代器和随机访问,堆栈或队列都不支持.

那么为什么C++提供了所有这三个,因为deque比其他两个更强大?

谢谢!

c++ stl deque data-structures

1
推荐指数
1
解决办法
166
查看次数