小编Gre*_*ill的帖子

包含unsigned char和int bug的C++ struct

好的,我的C++程序中有一个结构,如下所示:

struct thestruct
{
 unsigned char var1;
 unsigned char var2;
 unsigned char var3[2];
 unsigned char var4;
 unsigned char var5[8];
 int var6;
 unsigned char var7[4];
};
Run Code Online (Sandbox Code Playgroud)

当我使用这个结构时,在"var6"之前添加3个随机字节,如果我删除"var5"它仍然在"var6"之前,所以我知道它总是在"var6"之前.

但是,如果我删除"var6",那么3个额外的字节就消失了.

如果我只使用带有int的结构,则没有额外的字节.

所以unsigned char和int之间似乎存在冲突,我该如何解决?

c++ byte struct

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

记忆和指针

我需要一些关于任务的一些帮助.

我的任务是创建一个内存区域

void *memory = malloc(320);
Run Code Online (Sandbox Code Playgroud)

然后使用指针将文本存储到这个存储位置:我们想将这个区域划分为32个字节的数据块,母猪我们可以存储:320/32 = 10个数据块,32个字节.在一个数据块中,我可以存储(1个ASCSII char = 1个字节)32个字符.

我有一个10位的位图,其中每个位指示是否使用数据块(1)或不使用(0).

但是,如果我想存储长度为60个字符的文本呢?然后我需要2个数据块(2 x 32字节).位图显示数据块2和6是空闲的,1和6不是并排的.我怎样才能做到这一点?

struct  data {
    char * text;
};

typedef struct data d;

d->text = ???
Run Code Online (Sandbox Code Playgroud)

c memory pointers heap-fragmentation

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

在字典理解中使用locals()

下面的代码不起作用,我假设因为理解中的locals()变量将引用嵌套块,其中评估了理解:

def f():
    a = 1
    b = 2
    list_ = ['a', 'b']
    dict_ = {x : locals()[x] for x in list_}
Run Code Online (Sandbox Code Playgroud)

我可以使用globals(),它似乎工作,但这可能会带来一些额外的问题(例如,如果有一个来自周围范围的变量恰好具有相同的名称).

有没有什么能使字典在函数范围内精确地使用变量f

注意:我这样做是因为我有许多变量,我希望稍后将其放入字典中,但不希望通过编写dict_['a']而不是a在此期间使代码复杂化.

python list-comprehension python-3.x

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

在Erlang中创建列表

来自Cesarini的"Erlang编程"练习3-2

当我通过"Erlang编程"时,我得到了奇怪的列表创建问题.从练习3-2开始,我写了两个类似的功能.

create( 0 ) -> [];
create( N ) when N > 0 -> [ N | create( N-1 ) ].

reverse_create( 0 ) -> [];
reverse_create( N ) when N > 0 -> [ reverse_create( N-1 ) | N ].
Run Code Online (Sandbox Code Playgroud)

所以create(3)就像我期望的那样生成.

exercise3:创建(3).
[3,2,1]

但是reverse_create不会生成我期望的列表.

exercise3:reverse_create(3).
[[[[] | 1] | 2] | 3]

我需要更改什么才能使reverse_create(3)返回[1,2,3]?谢谢你的解释.

erlang reverse list

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

如何在 C 中将字符串传送到 popen() 命令中?

我在uni中使用c(或多或少是第一次)工作,我需要从字符数组生成MD5。该分配指定这必须通过创建管道并md5在系统上执行命令来完成。

我已经走到这一步了:

FILE *in;
extern FILE * popen();
char buff[512];

/* popen creates a pipe so we can read the output
 * of the program we are invoking */
char command[260] = "md5 ";
strcat(command, (char*) file->name);
if (!(in = popen(command, "r"))) {
    printf("ERROR: failed to open pipe\n");
    end(EXIT_FAILURE);
}
Run Code Online (Sandbox Code Playgroud)

现在这工作得很好(对于作业的另一部分,需要获取文件的 MD5),但我无法弄清楚如何将字符串通过管道传输到其中。

如果我理解正确的话,我需要做类似的事情:

FILE * file = popen("/bin/cat", "w");
fwrite("hello", 5, file);
pclose(file);
Run Code Online (Sandbox Code Playgroud)

我认为,它将执行 cat,并通过 StdIn 将“hello”传递给它。这是正确的吗?

c unix md5 popen

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

list(string)如何将字符串拆分为python中的字符数组?

a = "Stack"
aList = list(a)
Run Code Online (Sandbox Code Playgroud)

这给了我一个像这样的数组 ['S','t',a','c','k']

我想知道这个list(string)功能是如何工作的!

python

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

如何使用std :: mem_fun传递参数

我想知道是否有办法使用std :: mem_fun传递参数?我想确切地说,我可以拥有尽可能多的参数和许多成员函数.
问题是我的标准很旧而且我正在寻找一个完整的标准方式,因此即使我知道我可以轻松地做到这一点,也不允许提升作为答案= /

以下是我想如何使用它的一个小例子:

#include <list>
#include <algorithm>

// Class declaration
//
struct Interface {
   virtual void run() = 0;
   virtual void do_something(int) = 0;
   virtual void do_func(int, int) = 0;
};

struct A : public Interface {
   void run() { cout << "Class A : run" << endl; }
   void do_something(int foo) { cout << "Class A : " << foo << endl; }
   void do_func(int foo, int bar) { cout << "Class A : " << …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm foreach

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

Scala HashMap:按插入顺序迭代?

我一直在寻找,但大多数都指向一个Java TreeMap.唯一的问题是我不想将任何Scala转换为java并返回.如果真的没有办法,那么我对此感到满意,但我希望听到一些专业人士的意见,只是为了100%肯定并在这里为其他人提出这个问题,以便在他们有相似之处时偶然发现问题.提前致谢.

编辑:

键入:scala.collection.mutable.HashMap [String,String]

scala hashmap

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

涉及国际象棋的图算法:k移动中的可能路径

我正在尝试解决涉及国际象棋的算法问题.

假设我在A8中有一个国王,并希望将其移至H1(仅允许移动).我怎样才能找出完成任何给定k移动的可能性(路径)的数量?(例如,如果我想用15次动作将国王从A8移动到H1,会有多少路径/可能性?)

一个简单的解决方案是将其视为图形问题,并使用任何标准路径查找算法将每个移动计算为成本1.因此,假设我想要将我的王从A8移动到H1以10个移动.我只想搜索总计10的所有路径.

我的问题是,如果还有其他更聪明有效的方法吗?我也想知道,如果有更多的"数学"和直接找到这个数字而不是那么"算法"和"蛮力似的"?

algorithm chess graph-algorithm

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

在X上运行的Qt5程序可以禁用最小化并关闭吗?

我正在编写在X上运行的C ++ Qt5应用程序。它将在其下运行的窗口管理器是Metacity。我有一些要求,我不确定该如何解决:

  1. 窗口一定不能关闭
  2. 窗口一定不能最小化
  3. 窗口必须始终在最上面

我使用以下方式实现了要求3:

setWindowFlags(windowFlags() | Qt::WindowStaysOnTopHint);
Run Code Online (Sandbox Code Playgroud)

但是,右键单击窗口标题仍会显示一个弹出菜单:

在此处输入图片说明

从此菜单中,用户可以关闭“始终在顶部”设置,并且“最小化”和“关闭”选项仍然可用。我试过了:

setWindowFlags(windowFlags() & ~(Qt::WindowMinMaxButtonsHint | Qt::WindowCloseButtonHint));
Run Code Online (Sandbox Code Playgroud)

但是,此功能似乎无法使用此窗口管理器执行我想要的操作,因为没有功能被禁用。

一个后备位置是:

  • 如果应用程序曾经关闭过,则重新启动它(由于其他原因该应用程序已经存在)
  • 如果将窗口最小化,则将其恢复为正常大小

另一个备用位置是:

  • 使用Qt::X11BypassWindowManagerHint它完全避免了窗口管理器,并实现窗口移动和自己莫名其妙大小。

理想情况下,我想继续使用窗口管理器来提供窗口移动和大小功能,但关闭不需要的功能。


(请尽量避免使用诸如“您不应该那样做”或“那是一个愚蠢的主意”之类的评论-是的,我知道,但是此应用程序不是用于一般用途,它仅在专门的环境中使用,并且该主题达到我未写的要求。)

x11 metacity qt qt5

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