我正在试图生成调用图,以找出所有可能的执行path正在打一个特定的function(所以我不必手动找出所有的path,因为有很多path导致这个function)。 例如: path 1: A -> B -> C -> D path 2: A -> B -> X -> Y -> D path 3: A -> G -> M -> N -> O -> P -> S -> D … path n: … 我已经尝试Codeviz和Doxygen,不知何故这两个结果都显示目标函数,D调用。在我的情况下,D是一个类的成员函数,其对象将被包装在一个智能指针。 客户将通过工厂总是获得智能指针对象,以调用D. 有谁知道如何做到这一点?
我被告知C ++中的模板系统在编译时是Turing-complete的。 这在这篇文章中也提到了维基百科 。 你能提供一个利用这个属性的计算的一个不平凡的例子吗? 这在事实上是有用的吗?
我正在阅读我的C ++讲师的讲稿,他写了以下内容: 使用缩进//确定 永远不要依赖运算符优先级 – 总是使用括号// OK 总是使用{}块 – 即使是单行// 不行 ,为什么? 比较左侧的Const对象// OK 使用无符号的variables是> = 0 //好的技巧 删除后将指针设置为NULL – 双重删除保护//不错 第三种技术对我来说是不清楚的:通过在{ … }放置一行可以获得什么? 例如,拿这个奇怪的代码: int j = 0; for (int i = 0 ; i < 100 ; ++i) { if (i % 2 == 0) { j++; } } 并将其replace为: int j = […]
我想阅读一个文本文件的全部内容到一个std::string对象与c + +。 用Python,我可以这样写: text = open("text.txt", "rt").read() 这是非常简单和优雅。 我讨厌丑陋的东西,所以我想知道 – 用C ++读取文本文件最优雅的方式是什么? 谢谢。
我正在与C#中的Action Delegates合作,希望能够更多地了解它们并思考它们可能的用处。 有没有人使用行动委托,如果是的话,为什么? 或者你能举出一些可能有用的例子吗?
Scott Meyers发表了他的下一本书EC ++ 11的内容和状态 。 他写道,书中的一个项目可能是“避免函数签名中的std :: enable_if”。 std::enable_if可以用作函数参数,作为返回types或作为类模板或函数模板参数来有条件地从重载parsing中移除函数或类。 在这个问题中,所有三个解决scheme都显示 作为函数参数: template<typename T> struct Check1 { template<typename U = T> U read(typename std::enable_if< std::is_same<U, int>::value >::type* = 0) { return 42; } template<typename U = T> U read(typename std::enable_if< std::is_same<U, double>::value >::type* = 0) { return 3.14; } }; 作为模板参数: template<typename T> struct Check2 { […]
我是Windows平台上的C ++程序员。 我正在使用Visual Studio 2008。 我通常最终在内存泄漏代码。 通常我通过检查代码来发现内存泄漏,但是这很麻烦,并不总是一个好方法。 由于我买不起付费内存泄漏检测工具,所以我想让大家build议最好的方法来避免内存泄漏。 我想知道程序员如何find内存泄漏。 是否有任何标准或程序应该遵循,以确保程序中没有内存泄漏?
我必须在一些机器上同步大文件。 这些文件的大小可以达到6GB。 同步将每几周手动完成。 我不能考虑文件名,因为他们可以随时更改。 我的计划是在目标PC和源PC上创build校验和,然后将所有不在目标中的校验和的文件复制到目的地。 我的第一个尝试是这样的: using System.IO; using System.Security.Cryptography; private static string GetChecksum(string file) { using (FileStream stream = File.OpenRead(file)) { SHA256Managed sha = new SHA256Managed(); byte[] checksum = sha.ComputeHash(stream); return BitConverter.ToString(checksum).Replace("-", String.Empty); } } 问题在于运行时间: – SHA256与一个1,6 GB的文件 – > 20分钟 – 与MD5的1,6 GB的文件 – > 6.15分钟 有没有更好的方法来获得校验和(也许有更好的散列函数)?
有什么区别 char* name 它指向一个常量string,和 const char* name
在Unix系统上,gcc在哪里查找头文件? 今天早上我花了一点时间寻找一些系统头文件,所以我认为这是很好的信息。