小编ana*_*and的帖子

如何研究设计模式?

我已经阅读了大约4-5本关于设计模式的书籍,但我仍然觉得我在设计模式方面没有接近中级水平?

我该如何去研究设计模式?

有没有关于设计模式的好书?

我知道这只会有经验,但必须有一些方法来掌握这些?

design-patterns

352
推荐指数
13
解决办法
15万
查看次数

在整个范围内均匀生成随机数

我需要在指定的时间间隔内生成随机数,[max; min].

此外,随机数应该在区间上均匀分布,而不是位于特定点.

Currenly我正在生成:

for(int i=0; i<6; i++)
{
    DWORD random = rand()%(max-min+1) + min;
}
Run Code Online (Sandbox Code Playgroud)

从我的测试中,只有一点产生随机数.

Example
min = 3604607;
max = 7654607;
Run Code Online (Sandbox Code Playgroud)

随机数生成:

3631594
3609293
3630000
3628441
3636376
3621404
Run Code Online (Sandbox Code Playgroud)

从下面的答案:好的,RAND_MAX是32767.我在C++ Windows平台上.有没有其他方法来生成具有均匀分布的随机数?

c++ random

83
推荐指数
7
解决办法
11万
查看次数

是否使用GOTO?

目前我正在开发一个使用goto语句的项目.goto语句的主要目的是在例程中使用一个清理部分而不是多个return语句.如下所示:

BOOL foo()
{
   BOOL bRetVal = FALSE;
   int *p = NULL;

   p = new int;
   if (p == NULL)
   {
     cout<<" OOM \n";
     goto Exit;
   }

   // Lot of code...

Exit:
   if(p)
   {
     delete p;
     p = NULL;
   }
   return bRetVal;
}
Run Code Online (Sandbox Code Playgroud)

这使得我们可以更容易地跟踪代码中一个部分的清理代码,即在Exit标签之后.

但是,我已经阅读了许多地方,有goto语句是不好的做法.

目前我正在阅读Code Complete书,它说我们需要使用接近其声明的变量.如果我们使用goto,那么我们需要在第一次使用goto之前声明/初始化所有变量,否则编译器会给出goto语句跳过xx变量初始化的错误.

哪条路对不对?


来自Scott的评论:

看起来使用goto从一个部分跳转到另一个部分是不好的,因为它使代码难以阅读和理解.

但是如果我们只使用goto前进到一个标签那么它应该没问题(?).

c++ goto

61
推荐指数
14
解决办法
8万
查看次数

如何在C++中创建隐藏窗口

如何创建隐藏窗口?

此窗口的目的是接收一些消息.

c++ user-interface winapi window

36
推荐指数
3
解决办法
3万
查看次数

什么是数据断点?

我刚才知道有数据断点.我使用Visual Studio在C++工作了5年,从未使用过数据断点.

有人可以了解一下数据断点是什么,何时使用它们以及如何在VS中使用它们?

根据我的理解,当我们想要检查变量值的变化时,我们可以设置数据断点.在这种情况下,我们可以使用变量值的条件设置数据断点.

还有其他例子吗?

c++ debugging breakpoints conditional-breakpoint visual-studio

26
推荐指数
2
解决办法
4万
查看次数

如何从进程ID获取进程句柄?

我有进程ID,我想得到它的进程句柄.

有没有可用的API.

我尝试使用OpenProcess但它返回NULL,并且GetLastError = 0.

这是我在尝试Vista.

我想我需要在使用OpenProcess之前启用SeDebugPrivilege.但是为了启用SeDebugPrivilege,我需要获得它的Process句柄.

c++ winapi windows-vista

20
推荐指数
2
解决办法
5万
查看次数

找到要翻转的位数,以便在数组中获得最大值1

我们有一个像下面这样的阵列

{1 0 1 0 0 1 0 1}
Run Code Online (Sandbox Code Playgroud)

上面数组中的位数是8

如果我们取范围,[1,5]则范围内的位数[1,5][0 1 0 0 1].
如果我们翻转这个范围,那么在翻转后它将是[ 1 0 1 1 0]
翻转[1,5]范围后的总数为1[1 1 0 1 1 0 0 1] = 5

如果我们取范围,[1,6]那么[1,6]范围内的位数是[0 1 0 0 1 0].
如果我们翻转这个范围,那么在翻转之后它将是[ 1 0 1 1 0 1]
翻转[1,5]范围后的总数为1[1 1 0 1 1 0 1 1] = 6

所以答案是范围[1,6],翻转后我们可以获得6个1的数组

有没有一个好的算法可以解决这个问题.我只想到动态编程,因为这个问题可以分解为可以组合的子问题.

algorithm bit-manipulation dynamic-programming

19
推荐指数
2
解决办法
2万
查看次数

如何从DLL获取HINSTANCE?

我在VC++中创建了一个DLL作为Win32项目

DLLMAIN函数是

BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD  ul_reason_for_call,
                       LPVOID lpReserved
                     )
{
    return TRUE;
}
Run Code Online (Sandbox Code Playgroud)

现在我需要DLL的HINSTANCE,需要传递给Win32函数.

HMODULE和HINSTANCE相同吗?

我怎样才能获得HINSTANCE?

winapi visual-c++

16
推荐指数
3
解决办法
3万
查看次数

Vim作为Visual Studio IDE

我花了很多时间研究VIM.我是自从过去6年以来的Windows家伙,并且正在使用VS. 现在开始研究Linux了.我想让VIM尽可能接近VS. 我想在Project AutoCompletion中搜索不同选项卡中的项目导航文件等功能

我找到了上述要求的插件Project Pligin MiniExplore Taglist OmniComplete

我无法正确设置vimrc脚本.当我尝试从Project打开文件时,它会在不同的选项卡中打开.我想在不同的缓冲区中打开它.此外,当我想在缓冲区中关闭文件时,完整窗口将关闭.打开标签列表和项目窗口会让一切变得混乱.

有没有人用这些插件完成设置..你们可以发贴你的vimrc文件吗?它会为像我这样的新手节省很多时间..

vim

14
推荐指数
4
解决办法
2万
查看次数

箭头键不适用于firebase init命令

$ firebase init
!  Caution! Initializing outside your home directory
? What Firebase do you want to use? (Use arrow keys)
Run Code Online (Sandbox Code Playgroud)

我试图按箭头键但没有发生任何事情.在做firebase init什么时如何选择现有的firebase应用程序?

firebase

14
推荐指数
2
解决办法
3082
查看次数