Tag: C#的

什么是更有效的i ++或++我?

精确重复 : 在C ++中,i ++和++ i之间是否存在性能差异? 完全重复 : 在循环中的i ++和++之间的区别? 什么是更有效的i ++或++我? 我只在Java和C / C ++中使用过,但是我确实要求所有的语言都是这样实现的。 在大学里,我有一位教授向我们展示了++,我的效率更高,但已经有几年了,我想从SO社区获得意见。

用C ++ ifstream从文本文件中读取整数

我想从文本文件中读取graphics邻接信息并将其存储到一个向量中。 该文件具有任意数量的行 每行有任意数量的以'\ n'结尾的整数 例如, First line: 0 1 4 Second line: 1 0 4 3 2 Thrid line: 2 1 3 Fourth line: 3 1 2 4 Fifth line: 4 0 1 3 如果我使用getline()一次读取一行,我该如何parsing这一行(因为每一行都有可变整数)? 有什么build议么?

序列点和部分顺序

几天前, 这里有一个关于这个expression的讨论 我= ++ i + 1 调用UB(未定义的行为)或不。 最后得出的结论是它调用UB,因为'i'的值在两个序列点之间不止一次地改变。 我参与了与Johannes Schaub的讨论。 按照他的说法 i =(i,i ++,i)+1 ——(1)/ *也调用UB * / 我说(1)不会调用UB,因为前面的子expression式的副作用是由逗号操作符','在i和i ++之间以及在i ++和i之间清除的。 然后他给出了以下解释: “是的,在i ++之前完成所有副作用之后的顺序点,但是没有任何东西阻止了分配副作用与i ++的副作用重叠。 根本的问题是分配的副作用没有被指定为在在对赋值的两个操作数进行评估之前,所以序列点在保护这一点上不能做任何事情:序列点引起一个偏序:只是因为在++之后和之后有一个序列点并不意味着所有的副作用都被序列化关于我 。 另外,请注意,仅仅一个序列点就意味着什么:评估顺序不是由代码forms决定的。 这是由语义规则决定的。 在这种情况下,没有语义规则说明何时分配副作用发生在评估这些操作数的操作数或子expression式方面。 以“大胆”写的陈述让我感到困惑。 我所知道的: “在执行顺序中的某些特定点称为顺序点,以前评估的所有副作用应该是完整的,并且不会发生后续评估的副作用。 因为,逗号运算符也指定了执行顺序,当我们到达最后的i时,i ++的副作用已经被取消了。如果没有指定评估顺序,那么他(Johannes)会是正确的(但是在逗号运算符的情况下, )。 所以我只想知道(1)是否调用UB? 有人能给出另一个有效的解释吗 谢谢!

如何在Linux中创build高分辨率定时器来衡量程序性能?

我试图比较GPU的CPU性能。 对于NVIDIA GPU,我一直使用cudaEvent_ttypes来获得非常精确的时间。 对于我一直在使用以下代码的CPU: // Timers clock_t start, stop; float elapsedTime = 0; // Capture the start time start = clock(); // Do something here ……. // Capture the stop time stop = clock(); // Retrieve time elapsed in milliseconds elapsedTime = (float)(stop – start) / (float)CLOCKS_PER_SEC * 1000.0f; 显然,那段代码只是代码,如果你在秒钟计数。 而且,结果有时会显得很奇怪。 有谁知道在Linux中创build高分辨率定时器的方法吗?

如何从Windows服务运行控制台应用程序?

我有一个Windows服务,用C#写的,我需要从它运行一个控制台应用程序。 控制台应用程序也用C#编写。 当它不是从Windows服务运行时,控制台应用程序运行良好。 当它从ws运行时,它不会做任何事情,因为它应该工作10-20秒,我在debugging代码中看到一次执行。 我用以下代码启动我的控制台应用程序: proc.Start(fullPathToConsole, args); proc.WaitForExit(); 到控制台的path是正确的,当我试图从cmd运行它,或者只是在资源pipe理器(没有参数),它工作正常。 但是在运行服务之后,我看不出任何效果。 我已经尝试去服务属性,并授予它访问桌面和运行在系统和我的用户(也在服务属性中指定)。 全部保持不变。 另外:我知道服务没有用户界面,我不想要一个。 我想要服务来运行控制台应用程序。 没有必要从它得到任何数据或使用这个控制台像ui,只是运行它做的工作。 更新我:发现,运行钙或任何其他Windows应用程序很容易。 但仍然不能运行cmd或任何控制台应用程序。 其实我需要在XP SP2和Windows 2003 Server上运行它。 所以无论如何不需要与Vista交互。 会很高兴的任何意见!

以不同的用户身份运行代码(C#)

有没有办法告诉我的代码作为一个不同的用户运行? 我通过一个PInvoke调用NetUserSetInfo,我需要把它作为一个不同的用户。 有没有办法做到这一点?

使运营商“虚拟?

我需要使用虚拟<<运算符。 但是,当我试图写: virtual friend ostream & operator<<(ostream& os,const Advertising& add); 我得到编译器错误 错误1错误C2575:'operator <<':只有成员函数和基础可以是虚拟的 我怎么能把这个操作符变成虚拟的?

如何捕获空指针exception?

try { int* p = 0; *p = 1; } catch (…) { cout << "null pointer." << endl; } 我试图捕捉这样的exception,但它不工作,有任何帮助?

如何创buildList <T>的新的深层副本(克隆)?

在下面的一段代码中, using System; using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace clone_test_01 { public partial class MainForm : Form { public class Book { public string title = ""; public Book(string title) { this.title = title; } } public MainForm() { InitializeComponent(); List<Book> books_1 = new List<Book>(); books_1.Add( new Book("One") ); books_1.Add( new Book("Two") ); books_1.Add( […]

在任何情况下,新的返回NULL?

我知道,根据C ++标准,如果新分配内存失败,它应该抛出std :: bad_allocexception。 但是我听说有些编译器如VC6(或CRT的实现?)不遵守它。 这是真的 ? 我这样问,因为在每个新的语句之后检查NULL会使代码看起来非常难看。