Tag: C#的

为什么编译器允许string文字不是const?

记忆中的文字究竟在哪里? (见下面的例子) 我不能修改一个文字,所以它应该是一个const char *,尽pipe编译器让我使用char *,即使大部分的编译器标志都没有警告。 而char chartypes的const char *types的隐式转换给了我一个警告,见下面(在GCC上testing,但在VC ++ 2010上performance类似)。 另外,如果我修改了一个const char的值(在下面的GCC最好给我一个警告的技巧),它不会给出错误,我甚至可以修改并显示在GCC上(即使我猜测它仍然是一个未定义的行为,我不知道为什么它没有这样做的文字)。 这就是为什么我问这些文字被存储在哪里,以及在哪里存储更常见的常量? const char* a = "test"; char* b = a; /* warning: initialization discards qualifiers from pointer target type (on gcc), error on VC++2k10 */ char *c = "test"; // no compile errors c[0] = 'p'; /* bus error when execution […]

可以复制某个控件的所有属性? (C#窗体)

例如,我有一个DataGridView控件与蓝色BackgroundColor属性等..是否有一种方法,我可以传递或编程传递这些属性到另一个DataGridView控件? 像这样的东西: dtGrid2.Property = dtGrid1.Property; // but of course, this code is not working 谢谢…

使用iTextSharp进行PDF压缩

我目前正试图重新压缩已经创build的PDF,我试图find一种方法来重新压缩文档中的图像,以减less文件大小。 我一直在尝试使用DataLogics PDE和iTextSharp库来做到这一点,但我找不到一种方法来对这些项目进行stream再压缩。 我虽然有关于循环xobjects和获取图像,然后将DPI下降到96或使用libjpeg C#implimentation来改变图像的质量,但回到pdfstream似乎总是最终,与内存损坏或者其他一些问题。 任何样品将不胜感激。 谢谢

虚拟表和内存布局在多个虚拟inheritance中

考虑以下层次结构: struct A { int a; A() { f(0); } A(int i) { f(i); } virtual void f(int i) { cout << i; } }; struct B1 : virtual A { int b1; B1(int i) : A(i) { f(i); } virtual void f(int i) { cout << i+10; } }; struct B2 : virtual A […]

本地和全局variables如何默认初始化?

根据下面,我是对的? global_A引用初始化为null。 global_int是0 local_A引用为空 local_int未初始化 global_A.x和local_A.x都未初始化。 谢谢你的帮助。 A global_A; int global_int; class A { public : int x; } int main() { int local_int; A local_A; }

什么是在一个范围内生成一个无偏随机整数的最佳algorithm?

在这个StackOverflow的问题: 从范围生成随机整数 接受的答案build议在给定的min和max之间生成一个随机整数,其中min和max包含在以下公式中: output = min + (rand() % (int)(max – min + 1)) 但也是这样说的 这仍然略微偏向较低的数字…也可以扩展它,以消除偏见。 但这并不能解释为什么它偏向较低的数字或如何消除偏见。 所以,问题是:这是在一个(有符号)范围内生成一个随机整数的最优方法,而不依赖任何花哨,只是rand()函数,并且如果它是最优的,如何消除偏? 编辑: 我刚刚testing了@Joey针对浮点外推提出的while -loopalgorithm: static const double s_invRandMax = 1.0/((double)RAND_MAX + 1.0); return min + (int)(((double)(max + 1 – min))*rand()*s_invRandMax); 看看有多less统一的“球”正在“落入”并分布在多个“桶”之中,一个用于浮点外推的testing,另一个用于while loopalgorithm。 但结果却因“球”(和“水桶”)的数量而变化,所以我不能轻易挑选出一个胜利者。 工作代码可以在这个Ideone页面find。 例如,对于10个桶和100个球,对于浮点外推的理想概率的最大偏差对于浮点外推比对于循环的algorithm(分别为0.04和0.05)要小,但对于1000个球,最大偏差-loopalgorithm较小(0.024和0.011),而有10000个球时,浮点外推再次变得更好(0.0034和0.0053)等等,没有太多的一致性。 考虑到没有任何一种algorithm一致地产生均匀分布的可能性比其他algorithm更好,这使得我倾向于浮点外推,因为它似乎比while loopalgorithm执行得更快。 那么select浮点外推algorithm还是不错,或者我的testing/结论不完全正确?

STLvector和线程安全

假设我有一个N个元素的向量,但是这个向量的n个元素都有有意义的数据。 一个更新程序线程更新第n个或第n + 1个元素(然后设置n = n + 1),还检查n是否太接近于N,并在必要时调用vector :: resize(N + M)。 更新之后,线程调用多个子线程读取第n个数据并进行一些计算。 确保子线程永远不会更改或删除数据(实际上没有数据被删除),更新程序在完成更新后立即调用子线程。 到目前为止,没有发生任何问题,但是我想问一下如果在上一次更新之前还有一些子工作线程,向量重新分配给更大的内存块时是否会出现问题。 或者在这种multithreading的情况下使用向量是安全的,因为它不是线程安全的? 编辑:因为只有插入发生时更新调用vector::resize(N + M,0),有没有任何可能的解决scheme,我的问题? 由于STL向量的良好性能,我不愿意用一个可locking向量来replace它,或者在这种情况下是否有任何高性能,已知和无锁向量?

从.NET设置系统时区

有没有人有一些代码,将采取从.NET的TimeZoneInfo字段,并通过SetTimeZoneInformation执行interop代码设置系统时区? 我意识到它基本上是将TimeZoneInfo成员映射到结构成员,但是对于我而言,这些字段如何精确地映射或者我应该关心什么以外的偏见并不明显。

如何使用结构和比较函数向量的std :: sort?

感谢在C中的解决scheme ,现在我想在C ++中使用std :: sort和vector来实现: typedef struct { double x; double y; double alfa; } pkt; vector< pkt > wektor; 用push_back()填充; 比较function: int porownaj(const void *p_a, const void *p_b) { pkt *pkt_a = (pkt *) p_a; pkt *pkt_b = (pkt *) p_b; if (pkt_a->alfa > pkt_b->alfa) return 1; if (pkt_a->alfa < pkt_b->alfa) return -1; if […]

欧拉项目问题14(Collat​​z问题)

以下迭代序列是为正整数集定义的: n – > n / 2(n是偶数)n – > 3n + 1(n是奇数) 使用上面的规则并从13开始,我们生成以下序列: 13 40 20 10 5 16 8 4 2 1可以看出,这个序列(13开始,1结束)包含10个项。 虽然还没有被certificate(Collat​​z问题),但是所有的起始数字都被认为是1。 哪个起始数字低于一百万,会产生最长的连锁? 注意:一旦链条开始,条款被允许超过一百万。 我尝试使用bruteforce方法在C编码解决scheme。 但是,似乎我的程序在尝试计算113383时停顿。请指教:) #include <stdio.h> #define LIMIT 1000000 int iteration(int value) { if(value%2==0) return (value/2); else return (3*value+1); } int count_iterations(int value) { int count=1; //printf("%d\n", value); while(value!=1) { value=iteration(value); […]