我发现recursion,除了象阶乘这样非常简单的recursion之外,很难理解。 以下片段打印一个string的所有排列。 任何人都可以帮助我理解它。 什么是正确理解recursion的方法。 void permute(char a[], int i, int n) { int j; if (i == n) cout << a << endl; else { for (j = i; j <= n; j++) { swap(a[i], a[j]); permute(a, i+1, n); swap(a[i], a[j]); } } } int main() { char a[] = "ABCD"; permute(a, 0, 3); getchar(); […]
我在哪里可以findC和C ++中所有头文件的列表? 当我build立一个图书馆,我得到一个错误,如“ tree.h not found ”。 我想这是C和C ++中的标准头文件。 这引起了我对所有头文件及其贡献的好奇心。 有没有可以search的地方? 我正在Solaris Unix上工作。
我正在创build一个不可变的类。 我已将所有属性标记为只读。 我有一个class级的项目清单。 虽然如果属性是只读的,那么列表可以被修改。 公开列表的IEnumerable使其不可变。 我想知道为了使一个类不可变而必须遵循的基本规则是什么?
我想了解如何使用参考参数。 在我的文章中有几个例子,但是它们太复杂了,我不明白为什么以及如何使用它们。 如何以及为什么要使用参考? 如果您没有将参数设置为参考,会发生什么情况,而是将其closures? 例如,这些function有什么区别: int doSomething(int& a, int& b); int doSomething(int a, int b); 我知道引用variables是用来改变一个forms – >引用,然后允许双向交换参数。 不过,这是我所知道的程度,更具体的例子会有很大的帮助。
我喜欢vector很多。 他们漂亮,快速。 但是我知道这个叫valarray的东西存在。 为什么我会用valarray代替vector? 我知道valarrays有一些语法糖,但除此之外,它们何时有用?
当创build一个具有内部私有方法的类时,通常为了减less代码重复,不需要使用任何实例字段,是否有性能或内存优势来声明该方法是静态的? 例: foreach (XmlElement element in xmlDoc.DocumentElement.SelectNodes("sample")) { string first = GetInnerXml(element, ".//first"); string second = GetInnerXml(element, ".//second"); string third = GetInnerXml(element, ".//third"); } … private static string GetInnerXml(XmlElement element, string nodeName) { return GetInnerXml(element, nodeName, null); } private static string GetInnerXml(XmlElement element, string nodeName, string defaultValue) { XmlNode node = element.SelectSingleNode(nodeName); return node == […]
我正在问一个很好的参考multithreading编程的概念与良好的例子使用C + + / C#?
目标C iPhone开发中的“委托”是什么?
我希望能够在C#控制台应用程序中捕获CTRL + C ,以便在退出之前执行一些清理操作。 这样做的最好方法是什么?
重复: 如何确保一个事件只订阅一次,并已添加一个事件处理程序? 我有一个单身人士提供一些服务,我的类挂钩到它的一些事件,有时一个类挂钩两次事件,然后被调用两次。 我正在寻找一种经典的方法来防止这种情况发生。 不知何故,我需要检查,如果我已经迷上了这个事件…