嗨我必须将图形(.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) 我必须为这个问题找到一个有效的解决方案。我有两张地图。我必须将一些元素从 map1 移动到 map2(即从 map1 擦除并放入 map2)。我有我在 map1 中找到元素的键,即我现在正在做的:
bool temp;
temp = map1[key1];
map2[key1]=temp;
map1.erase(key1)
Run Code Online (Sandbox Code Playgroud)
我为每个键都这样做(在循环中)
我的问题是我的(我使用 C++11 编译器)是否有更便宜的解决方案
我用-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++编译器)
我有:
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)
我有一个
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编译器)