小编Umb*_*ert的帖子

Graphviz似乎不支持png和map

嗨我必须将图形(.dot)转换为地图和png,因为我必须使用graphviz生成带有doxygen的依赖图.但我有一个错误:

 error: problems opening map file
Run Code Online (Sandbox Code Playgroud)

如果我做点-v我有

dot - graphviz version 2.38.0 (20140413.2041)
libdir = "/usr/local/lib/graphviz"
Activated plugin library: libgvplugin_dot_layout.so.6
Using layout: dot:dot_layout
Activated plugin library: libgvplugin_core.so.6
Using render: dot:core
Using device: dot:dot:core
The plugin configuration file:
/usr/local/lib/graphviz/config6
was successfully loaded.
render  :  dot fig map pic pov ps svg tk vml xdot
layout  :  circo dot fdp neato nop nop1 nop2 osage patchwork sfdp
twopi
textlayout  : 
device  :  canon cmap cmapx cmapx_np dot eps fig gv imap imap_np …
Run Code Online (Sandbox Code Playgroud)

graphviz

6
推荐指数
2
解决办法
3486
查看次数

将元素从地图移动到另一个的有效方法

我必须为这个问题找到一个有效的解决方案。我有两张地图。我必须将一些元素从 map1 移动到 map2(即从 map1 擦除并放入 map2)。我有我在 map1 中找到元素的键,即我现在正在做的:

bool temp;
temp = map1[key1];
map2[key1]=temp;
map1.erase(key1)
Run Code Online (Sandbox Code Playgroud)

我为每个键都这样做(在循环中)

我的问题是我的(我使用 C++11 编译器)是否有更便宜的解决方案

c++ c++11

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

如何使用依赖于符号调试的参数定义函数?

我用-D编译器选项定义了一个符号debug:-DDEBUG_VALUE我是一个函数,其中一个参数的存在取决于符号调试标志的定义或更少.

即如果我定义了DEBUG_VALUE

my_function(int parameter1  ,int  my_parameter_dependant)
Run Code Online (Sandbox Code Playgroud)

除此以外

my_function(int parameter1)
Run Code Online (Sandbox Code Playgroud)

通过这种方式

my_function(int parameter1  #ifdef DEBUG_VALUE , int my_parameter_dependant #endif)
Run Code Online (Sandbox Code Playgroud)

我明白了

 error: stray ‘#’ in program
 error: expected ‘,’ or ‘...’ before ‘ifdef’
Run Code Online (Sandbox Code Playgroud)

我怎么解决?提前致谢!

(我在Unix系统上使用C++编译器)

c++ compiler-errors compiler-flags compiler-options c++11

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

是否有必要在std :: vector <pair <vector <int>,int >>中"嵌套"释放保留内存以供手动释放吗?

我有:

vector< pair<vector<int> , int> > mapped_samples;
Run Code Online (Sandbox Code Playgroud)

这非常大.我会手动释放内存.我知道一个简单的向量的技巧是:

vector<int> simple_vector;
vector<int>().swap(simple_vector); 
Run Code Online (Sandbox Code Playgroud)

在我的情况下,它可以做到:

vector<pair<vector<int> , int>>().swap(mapped_samples);
Run Code Online (Sandbox Code Playgroud)

或者必须做一些嵌套操作?

(我正在使用C++ 11)

c++ memory-management c++11

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

当向量的维度必须递增时,避免重新分配向量

我有一个

vector< pair<vector<double> , int>> samples;
Run Code Online (Sandbox Code Playgroud)

该向量将包含许多元素.为了效率rason我以这种方式初始化它:

vector< pair<vector<double> , int>> samples(1000000);
Run Code Online (Sandbox Code Playgroud)

我从另一个容器中预先知道了(不是编译时)的大小.问题是我必须减少1个元素的向量维度.实际上,这种情况不是问题,因为调整尺寸小于初始没有重新分配.我可以这样做

samples.resize(999999);

问题是在某些情况下,而不是减少1个元素的维度,我必须增加元素的维度.如果我做

samples.resize(1000001);
Run Code Online (Sandbox Code Playgroud)

存在重新分配的风险,我希望避免效率rasons.我问是否可能解决我的问题是这样的:

vector< pair<vector<double> , int> samples;
samples.reserve(1000001);
samples.resize(1000000);
.
. Elaboration that fill samples 
.
samples.resize(1000001); //here I don't want reallocation
Run Code Online (Sandbox Code Playgroud)

或者如果有更好的解决方案?提前致谢!

(我正在使用C++ 11编译器)

c++ c++11

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