Tag: C#的

C编程:如何编程为Unicode?

严格的Unicode编程需要什么先决条件? 这是否意味着我的代码不应该在任何地方使用chartypes,并且需要使用可以处理wint_t和wchar_t函数? 在这种情况下多字节字符序列所起的作用是什么?

为什么std :: stack默认使用std :: deque?

由于在堆栈中使用容器的唯一操作是: 背部() 推回() pop_back() 为什么默认的容器是deque而不是vector? 不要deque reallocations在front()之前给出一个元素的缓冲区,这样push_front()是一个高效的操作? 这些元素是不是浪费了,因为他们永远不会在堆栈的情况下使用? 如果使用这种方式代替vector没有任何开销,为什么priority_queuevector的默认值也不是一个deque? (priority_queue需要front(),push_back()和pop_back() – 与堆栈基本相同) 根据下面的答案更新: 看来deque通常被实现的方式是固定大小数组的可变大小的数组。 这使得增长速度比一个向量(需要重新分配和复制)要快,所以对于像堆栈这样的东西来说,添加和删除元素,deque可能是更好的select。 priority_queue需要大量索引,因为每个删除和插入都需要运行pop_heap()或push_heap()。 这可能会使向量成为更好的select,因为添加元素仍然是不变的。

打印一个指针包含在C中的地址

我想做一些看起来相当简单的事情。 我得到的结果,但问题是,我没有办法知道如果结果是正确的。 我在C工作,我有两个指针; 我想打印指针的内容。 我不想取消引用指针来获取指向的值,我只想要指针存储的地址。 我写了下面的代码,我需要知道的是,如果它是正确的,如果不是,我该如何纠正它。 /* item one is a parameter and it comes in as: const void* item1 */ const Emp* emp1 = (const Emp*) item1; printf("\n comp1-> emp1 = %p; item1 = %p \n", emp1, item1 ); 虽然我发布这个(而这是重要的,这是正确的)是我最终需要做一个指针指针。 那是: const Emp** emp1 = (const Emp**) item1;

将标志存储为位掩码而不是使用关联表最好是什么时候?

我正在开发一个应用程序,用户有不同的权限来使用不同的function(例如读取,创build,下载,打印,批准等)。 预期权限列表不会经常更改。 我有几个如何将这些权限存储在数据库中的选项。 选项2会在哪些情况下更好? 选项1 使用关联表。 用户 —- UserId(PK) 名称 部 允许 —- PermissionId(PK) 名称 User_Permission —- UserId(FK) PermissionId(FK) 选项2 为每个用户存储一个位掩码。 用户 —- UserId(PK) 名称 部 权限 [Flags] enum Permissions { Read = 1, Create = 2, Download = 4, Print = 8, Approve = 16 }

使用基于范围的for循环时需要迭代器

目前,我只能做这个基于范围的循环: for (auto& value : values) 但有时我需要一个迭代器的值,而不是一个参考(无论出于何种原因)。 有没有办法通过比较值的整个向量?

你如何在C中构build一个结构体?

我试图制作一个结构数组,其中每个结构代表一个天体,用于我在课堂上正在处理的问题。 我没有那么多的结构体验,这就是为什么我决定尝试使用它们而不是一大堆数组,但是,即使我试图实现这些技术,我仍然遇到许多不同的错误我已经看到了各种线程和stackoverflow(如C和C中的结构数组 – 初始化结构数组 ),但是不是所有的都适用,所以我不能完全复制的方式来做它。 在我告诉你我要做什么之前,只是一个预警,我不能回复几个小时的评论/问题/答案,因为我需要睡觉,因为我已经清醒了太久,我对此感到非常抱歉,但在忙了一天之后,我已经在这个问题上工作了好几个小时,我真的很累。 对于那些已经读过这些东西的人来说,更多的信息是:我不需要任何这种dynamic的东西,我知道/预先确定所有东西的大小。 我也需要这是一个全局数组( gasp GLOBAL VARIABLES ),因为我在几个不同的方法中定义了参数(即GLUT方法)来访问它。 这是我如何定义我的头结构: struct body { double p[3];//position double v[3];//velocity double a[3];//acceleration double radius; double mass; }; 在定义结构的内部之前,我定义了其他全局variables的列表,其中一个是这个结构的数组(基本上,如果我在模糊的说话中太模糊了,下面的行高于以上的东西): struct body bodies[n]; 只是你知道, n是我合法定义的东西(即#define n 1 )。 我用了几个不同的方法来使用这个数组,但是最简单和最不耗空间的方法就是我的main方法的简化forms,我初始化了每个结构体中的所有variables,只是在某些variables被设置之前,办法: int a, b; for(a = 0; a < n; a++) { for(b = 0; b < 3; b++) […]

什么是'int foo :: * bar :: *`?

C ++的一个很酷的事情是它可以让你创build指向成员types的variables。 最常见的用例似乎是获得一个方法的指针: struct foo { int x() { return 5; } }; int (foo::*ptr)() = &foo::x; foo myFoo; cout << (myFoo.*ptr)() << '\n'; // prints "5" 然而,乱搞,我意识到,他们可以指向成员variables: struct foo { int y; }; int foo::*ptr = &foo::y; foo myFoo; myFoo.*ptr = 5; cout << myFoo.y << '\n'; // prints "5" 这很好。 这引导我进一步的实验:如果你能得到一个结构的子成员的指针? struct foo […]

关于++运算符的C和C ++的区别

我一直在玩一些代码,看到一些我不明白的“为什么”。 int i = 6; int j; int *ptr = &i; int *ptr1 = &j j = i++; //now j == 6 and i == 7. Straightforward. 如果把操作员放在等号的左边呢? ++ptr = ptr1; 相当于 (ptr = ptr + 1) = ptr1; 而 ptr++ = ptr1; 相当于 ptr = ptr + 1 = ptr1; 后缀运行编译错误,我明白了。 你在赋值运算符的左边有一个常量“ptr + 1”。 […]

如何知道HttpClient何时超时?

据我所知,没有办法知道这是特别发生的超时。 我不是在正确的地方寻找,还是我错过了更大的东西? string baseAddress = "http://localhost:8080/"; var client = new HttpClient() { BaseAddress = new Uri(baseAddress), Timeout = TimeSpan.FromMilliseconds(1) }; try { var s = client.GetAsync("").Result; } catch(Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.InnerException.Message); } 这返回: 发生一个或多个错误。 任务被取消了。

C / C ++中的固定长度数据types

我听说像int这样的数据types的大小可能会因平台而异。 我的第一个问题是:有人可以带一些例子,什么错误,当程序假定一个int是4个字节,但在不同的平台上它是2个字节? 我的另一个问题是相关的。 我知道人们用一些typedefs解决这个问题,就像你有像u8 , u16 , u32这样的variables – 无论平台如何都保证是8位,16位,32位 – 我的问题是,这是怎么实现的? (我不是指stdint库中的types – 我手动好奇,如何强制某种types总是说32位而不pipe平台是什么?)