小编puc*_*cio的帖子

Valgrind Massif工具输出图形界面?

我正在使用Valgrind 3.3.1和Massif工具来分析C++应用程序的堆,我想知道是否有一个图形工具来检查文本输出文件.

谢谢你的任何建议.

valgrind massif

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

如何在构造函数中初始化const字段?

想象一下,我有一个C++类Foo和一个类Bar,它必须用一个构造函数创建,其中传递一个Foo指针,这个指针意味着在Bar实例生命周期中保持不变.这样做的正确方法是什么?

事实上,我认为我可以像下面的代码一样编写,但它不能编译..

class Foo;

class Bar {
public:
    Foo * const foo;
    Bar(Foo* foo) {
        this->foo = foo;
    }
};

class Foo {
public:
  int a;
};
Run Code Online (Sandbox Code Playgroud)

任何建议都是受欢迎的.

c++ constructor const ctor-initializer

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

空UDP和TCP数据包的大小?

空UDP数据报的大小是多少?那个空TCP包呢?

我只能找到有关MTU的信息,但我想知道它们的"基本"大小是什么,以便估计它们之上的协议的带宽消耗.

size udp tcp

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

从名称实例化类?

想象我有一堆C++相关的类(所有扩展相同的基类并提供相同的构造函数),我在一个公共头文件(我包括)中声明,以及它们在其他一些文件中的实现(我编译和链接静态作为我的程序构建的一部分).

我希望能够实例化其中一个传递名称,这是一个必须传递给我的程序的参数(作为命令行或编译宏).

我看到唯一可行的解​​决方案是使用宏:

#ifndef CLASS_NAME
#define CLASS_NAME MyDefaultClassToUse
#endif

BaseClass* o = new CLASS_NAME(param1, param2, ..);
Run Code Online (Sandbox Code Playgroud)

这是唯一有价值的方法吗?

c++ macros class

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

c ++ map find()可能insert():如何优化操作?

我正在使用STL映射数据结构,此时我的代码首先调用find():如果键以前不在映射中,则调用insert()它,否则它什么都不做.

map<Foo*, string>::iterator it;
it = my_map.find(foo_obj);   // 1st lookup

if(it == my_map.end()){
  my_map[foo_obj] = "some value";  // 2nd lookup
}else{
  // ok do nothing.
}
Run Code Online (Sandbox Code Playgroud)

我想知道是否有比这更好的方法,因为据我所知,在这种情况下,当我想插入一个尚未出现的密钥时,我在地图数据结构中执行2次查找:一次用于查找( ),insert()中的一个 (对应于operator []).

提前感谢任何建议.

c++ stl map

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

C++ TR1:如何使用normal_distribution?

我正在尝试使用C++ STD TechnicalReport1扩展来生成正常分布后的数字,但是这段代码(改编自本文):

mt19937 eng;
eng.seed(SEED);

normal_distribution<double> dist;
// XXX if I use the one below it exits the for loop
// uniform_int<int> dist(1, 52);

for (unsigned int i = 0; i < 1000; ++i) {
  cout << "Generating " << i << "-th value" << endl;
  cout << dist(eng) << endl;
}
Run Code Online (Sandbox Code Playgroud)

只打印1"Generating ..."日志消息,然后永远不会退出for循环!如果我使用我注释掉的发行版,它会终止,所以我想知道我做错了什么.任何的想法?

非常感谢!

c++ normal-distribution tr1

9
推荐指数
2
解决办法
9925
查看次数

C++:生成高斯分布

我想知道在C++标准库中是否有任何高斯分布数生成器,或者是否有任何代码片段可以通过.

提前致谢.

c++ normal-distribution gaussian

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

使用RSA-1024签署SHA-256摘要:大小是多少?

我想知道:1)如果我用SHA-512 => 计算一些数据的摘要,导致64字节的散列2)然后我用RSA-1024 => 签署这个散列,所以一个128字节的块,这是大于摘要的64个字节

=>这是不是意味着我的签名哈希到底是 128字节?

非常感谢任何信息.

encryption cryptography rsa sha digital-signature

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

如何有效删除存储在多个容器中的C++对象?auto_ptr的?

我有一个应用程序,它在执行期间创建某种类型的对象(比如"Foo"类),跟踪一些统计信息,并将它们插入到两个STL映射中的一个或两个中,例如:

map<Foo*, int> map1;
map<Foo*, int> map2;
Run Code Online (Sandbox Code Playgroud)

我想知道删除Foo对象的最佳方法是什么.目前我的解决方案是迭代map1和map2,并将Foo指针放入一个集合中,然后在这个集合上进行交互并在每个集合上调用delete.

有没有更有效的方法,可能使用auto_ptr?如果是这样,因为auto_ptr <>对象不能存储在STL容器中?

提前致谢.

c++ stl auto-ptr

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