小编Gen*_*ure的帖子

表示多图(C++)的良好数据结构

描述无定向多图(针对速度和内存进行了优化)的最佳数据结构是什么?

边缘列表是不合适的,因为获取顶点的邻居经常在我的代码中发生.

邻接列表并不好,因为我必须保留有关被访问边的信息,并且当访问1到3的边时(比如我遍历1的邻居并找到导致3并具有权重的边w),我必须在3的邻居列表中找到相同的边缘以将其标记为已访问,这很慢.

我已经考虑过邻接矩阵当每个小区将是set<Edge>其中Edge是表示关于如果顶点被访问信息的结构,重量边缘等.然而,具有当graph[0][1][i]为已访问我无法设置相同边缘中graph[1][0]的边缘没有线性搜索.

在表示多图时,有什么好的方法和技巧吗?我不想要第三个图书馆解决方案boost::AdjacencyList; 我必须自己写.

编辑:对不起有误.这是大学的练习,我只能使用标准库来完成它.该图有约束:0 <n≤300 - 顶点数0 <m≤20000 - 边数1≤w≤500

我的内存限制为32 MB,时间限制为0.5秒(我必须遍历DFS).

c++ graph data-structures

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

std :: addressof - 奇怪的实现

所以几天前我学到了std :: addressof.在http://en.cppreference.com/w/cpp/memory/addressof上给出了一个可能的实现:

template< class T >
T* addressof(T& arg) 
{
    return reinterpret_cast<T*>(
               &const_cast<char&>(
                  reinterpret_cast<const volatile char&>(arg)));
}
Run Code Online (Sandbox Code Playgroud)

据我所知,这可以简单地实现,如:

template<typename T>
T* addressof( T& var )
{
    return &var;
}
Run Code Online (Sandbox Code Playgroud)

为什么cppreference的人选择用3个演员来实现它?是否有任何我缺少的细节使他们的实施更好.当你所做的一切都被施展时,使用volatile的意义何在?

c++ std

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

简单的小型c ++ IDE

我正在寻找一个小而简单的环境来运行小型C++示例.我讨厌打开visual studio并为一个包含50行代码的单个源文件创建一个项目.唯一的要求是获得stl支持(像桌面上的http://www.compileonline.com/compile_cpp_online.php这样的smth 会很棒).

谢谢.

c++ ide

8
推荐指数
1
解决办法
3万
查看次数

C++函数装饰器

我正在寻找一种在C++中装饰函数或lambdas的方法.目标是在函数调用之前和之后执行某些操作.正如我所见,最接近使用的是std :: function,但它需要具有其参数的类型.

class FunctionDecorator
{
public:
    FunctionDecorator( std::function func )
        : m_func( func )

    void operator()()
    {
        // do some stuff prior to function call

        m_func();

        // do stuff after function call
    }

private:
    std::function m_func;
};
Run Code Online (Sandbox Code Playgroud)

如果模板类型可以在std :: function中使用它会很好,当我将指针传递给函数或std :: bind的结果时,它可以以某种方式推导出它.在C++中这样的事情是否可行.

c++ templates c++11

7
推荐指数
2
解决办法
2987
查看次数

在Python上用十进制计算Pi

我正在尝试使用Ramanujan的公式之一在Python上以任意精度计算pi:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century.它基本上需要大量因子和高精度浮点数除法.

到目前为止,这是我的代码:http: //pastie.org/private/pa6ijmoowiwiw4xwiqmq

我在pi的第15位附近得到了错误(3.1415926535897930,它应该是3.1415926535897932).你能给出一些建议吗?为什么会这样?我正在使用十进制类型,文档说它允许任意精度浮点数和整数.

PS:这是一个家庭作业,所以我不能使用另一个公式.PSS:我正在使用python 2.7

谢谢:)

python pi

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

如何知道Python中是否删除了对象

我在堆中有一个对象并引用它.在某些情况下,对象会被删除,但指向其位置的引用不知道这一点.如何检查堆中是否有真实数据?

例如:

from PySide import *
a = QProgressBar()
b = QProgressBar()
self.setIndexWidget(index,a)
self.setIndexWidget(index,b)
Run Code Online (Sandbox Code Playgroud)

然后该a对象被删除但print(a)返回一个有效的地址.但是,如果您尝试a.value()- 发生运行时错误(C++对象已被删除).

a is None回报False.

python pyside

4
推荐指数
2
解决办法
3212
查看次数

具有动态变化内容的QScrollArea

我有一个QScrollArea,里面有一些按钮,如图所示. 在此输入图像描述

布局的想法是:1.当按钮太宽时,应使用左右按钮滚动按钮

2.滚动区域中的按钮数量可以动态更改3.应尽可能使用任何可用空间来扩展滚动区域.如果不存在这样的空间,则应使用导航按钮进行滚动.

随着我当前的实现,当我增加按钮我有这个: 在此输入图像描述

但是右边有自由空间,所以看起来应该是这样的: 在此输入图像描述

例如,如果我再次增加到10,那么应该出现滚动条(因为小部件会占用布局).

我想知道除了手动调整窗口小部件之外是否还有其他方法(因为ui可以翻译,按钮可以改变大小提示,真正的设计也更复杂:(

这是我对ScrollAreaTest小部件的实现:

#include "MainWidget.h"

#include <QLineEdit>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QPushButton>
#include <QDebug>
#include "ButtonWidget.h"

#include "CheckableButtonGroup.h"

MainWidget::MainWidget(QWidget *parent)
    : QWidget(parent),
      m_scrollArea( 0 ),
      m_lineEdit( 0 ),
      m_buttons( 0 )
{
    QVBoxLayout* mainLayout = new QVBoxLayout( this );
    QWidget* firstRow = new QWidget;
    QHBoxLayout* firstRowLayout = new QHBoxLayout( firstRow );

    QPushButton* left  = new QPushButton;
    QPushButton* right = new QPushButton;

    m_buttons = new CheckableButtonGroup( Qt::Horizontal );
    m_buttons->setSizePolicy( QSizePolicy::Expanding, QSizePolicy::Preferred );
    m_buttons->setButtonsCount( …
Run Code Online (Sandbox Code Playgroud)

c++ qt desktop-application qscrollarea qlayout

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

从 ios 应用程序中删除结构框架

我从客户那里获得了一个 iOS 项目。主要任务是探索和查看用户界面,以便使用 Xamarin 从头开始​​制作多平台应用程序。

我注意到该项目使用名为fabric 的第三方框架。据我所知,它是从崩溃分析中使用的。我不需要那个并且我没有注册所以我想从项目中删除所有依赖项。

到目前为止我做了:

  1. 已删除define ENABLE_FABRIC(从 AptDelegate 中删除了一些代码,用普通 NSLog 等替换了日志消息)
  2. 从构建阶段删除了一些结构脚本调用
  3. 从项目中的结构框架中删除了参考

所以我在构建我的应用程序时仍然有错误:

/bin/sh: /Users/macmini/Library/Developer/Xcode/DerivedData/../Build/Intermediates/../Script-FDC6FCE81A4488D000F2613D.sh: (null): bad interpreter: No such file or directory

有谁知道摆脱这种情况的快速方法?

ios twitter-fabric

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

用多线程计算Pi(无加速度 - 做什么)

我正在尝试使用Ramanujan的公式之一在Python上以任意精度计算pi:http://en.wikipedia.org/wiki/Approximations_of_%CF%80#20th_century.它基本上需要大量因子和高精度浮点数除法.

我使用多个线程来划分无限级数计算,方法是给每个线程赋予所有具有一定模数的成员除以线程数.因此,如果你有3个线程,总和应该像这样划分线程1 ---> 1,4,7 ...成员线程2 ----> 2,5,8 ...线程3 ---- > 3,6,9 ......

到目前为止,这是我的代码:

from decimal   import *
from math      import sqrt, ceil
from time      import clock
from threading import *
import argparse

memoizedFactorials = []
memoizedFactorials.append( 1 )
memoizedFactorials.append( 1 )

class Accumulator:
    def __init__( self ):
        self._sum = Decimal( 0 )

    def accumulate( self, decimal ):
        self._sum += decimal

    def sum( self ):
        return self._sum

def factorial( k ):
    if k < 2: return 1 …
Run Code Online (Sandbox Code Playgroud)

python multithreading pi

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