小编con*_*ist的帖子

是否更快地访问堆中的数据?

我知道这听起来像是一个普遍的问题而且我已经看过很多类似的问题(无论是在这里还是在网上),但它们都不是真的像我的困境.

说我有这个代码:

void GetSomeData(char* buffer)
{
    // put some data in buffer
}

int main()
{
     char buffer[1024];
     while(1)
     {
          GetSomeData(buffer);
          // do something with the data
     }
     return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我在全局声明缓冲区[1024],我会获得任何性能吗?

我通过time命令在unix上运行了一些测试,执行时间之间几乎没有差异.

但我真的不相信......

理论上,这种变化应该有所作为吗?

c c++ heap performance stack

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

是否可以以编程方式将文件夹添加到资源管理器窗口中的Windows 10快速访问面板?

显然,微软已经(有点)用快速访问项取代了"收藏夹"Windows资源管理器项.但我找不到以编程方式向其添加文件夹的方法(在Google上都不是MSDN).有没有办法做到这一点?

winapi windows-10

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

为什么在恒定时间(O(1))中访问数组中的任何单个元素?

根据Wikipedia,访问数组中的任何单个元素需要恒定的时间,因为只需要执行一个操作来定位它.

对我来说,幕后发生的事情可能看起来像这样:

a)线性搜索(例如,我想访问元素5.我在索引0开始搜索,如果它不等于5,我去索引1等)这是O(n) - 其中n是数组的长度

b)如果数组存储为B树,这将给出O(log n)

我认为没有其他方法.

有人可以在O(1)中解释为什么以及如何做到这一点?

arrays algorithm time-complexity

10
推荐指数
3
解决办法
5383
查看次数

逗号运算符在赋值期间如何工作?

int a = 1;
int b = (1,2,3);
cout << a+b << endl; // this prints 4
Run Code Online (Sandbox Code Playgroud)
  1. (1,2,3)c ++中的某种结构(某种原始类型的列表,也许?)
  2. 为什么b分配值3?编译器是否只是从列表中取出最后一个值?

c

9
推荐指数
2
解决办法
2657
查看次数

覆盖是否违反了开放/封闭原则?

开放/封闭原则规定一个类应该开放以进行扩展,但是关闭以进行修改.

我认为修改部分严格指的是改变基类的源代码.但我与某人说过,这也涉及从基类中重写方法.

这个解释对吗?

oop open-closed-principle solid-principles

8
推荐指数
2
解决办法
852
查看次数

Tortoise SVN责备显示无意义

我有一个版本化的.cpp文件,我想看看谁编写了一行代码,所以我使用了Tortoise SVN blame选项.但是当它打开文件时,它显示的是:

在此输入图像描述

有没有人遇到过这个问题?

PS

我正在使用Tortoise SVN 1.8.1

svn tortoisesvn blame

6
推荐指数
1
解决办法
1315
查看次数

用于在迷宫中查找移动实体的算法

A有一个由玩家控制的迷宫和角色以及一个必须找到他的无人机(单独).有没有人知道(高效)AI算法做这样的事情?PS我知道有几种路径寻找算法(例如A*),但据我所知,这些只能找到"不动"的两个节点之间的路径(如果我的角色静止不动,这会有效,但是这显然不是这种情况).

algorithm maze path-finding

5
推荐指数
1
解决办法
336
查看次数

Prolog - thread_join 问题

Prolog 中的线程不共享其堆栈中的数据(在文档中是这样说的)。但是,据我所知,这可以通过将线程与 thread_join 连接来解决。如果到目前为止我所说的有任何错误,请纠正我。但是,如果一切都是真的,你能告诉我为什么下面的代码没有输出我期望的结果吗?

maximum(X,Y,Y) :- X =< Y,!.
maximum(X,_,X).

start :- thread_create(maximum(5,6,X),Id1,[]),
         thread_create(maximum(8,7,Y),Id2,[]),
         thread_create(maximum(9,9,Z),Id3,[]),
         thread_join(Id1,_),
         thread_join(Id2,_),
         thread_join(Id3,_),
         writeln(X),
         writeln(Y),
         writeln(Z).
Run Code Online (Sandbox Code Playgroud)

PS 我期望它输出的是 6,8 和 9(在单独的行上)。

multithreading prolog

4
推荐指数
1
解决办法
853
查看次数

为什么char**不能成为C++中以下函数的返回类型?

我在C++中有以下功能:

char** f()
{
    char (*v)[10] = new char[5][10];
    return v;
}
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2008表示如下:

error C2440: 'return' : cannot convert from 'char (*)[10]' to 'char **'
Run Code Online (Sandbox Code Playgroud)

为了使这个功能起作用,返回类型究竟应该是什么?

c c++ function return-type char

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

在c ++中,将一个动态分配的对象传递给一个函数(总是)一个坏主意?

我知道问题的标题看起来有点令人头疼,但我真的不知道怎么用一句话来问这个问题.我只会告诉你我的意思:

void f(T *obj)
{
    // bla bla
}
void main()
{
    f(new T());
}
Run Code Online (Sandbox Code Playgroud)

据我所知,(几乎)每个新的都需要一个删除,这需要一个指针(由new返回).在这种情况下,new返回的指针不存储在任何地方.这会是内存泄漏吗?

C++是否有某种神奇的功能(程序员看不见),它会在函数结束后删除对象,或者这种做法总是一个坏主意?

c++ pointers function

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