如果我手动重载==一个结构的运算符,我是否可以!=免费获得运算符(可能被定义为布尔反对),或者我是否必须手动重载(即使只是return !(this == rhs)?
编辑 - 问题不在于我是否可以使两个运算符都超载,而是如果我已经重载了相等运算符,是否必须重载不等式.无论如何,已经给出了很好的答案.
我熟悉切片,我只是无法绕过这个,我尝试改变一些值来试图说明发生了什么,但这对我没有意义.
无论如何,这是一个例子:
l = [[0, 0, 0], [0, 1, 0], [1, 0, 0], [1, 1, 1]]
print l[:,0:2]
Run Code Online (Sandbox Code Playgroud)
导致:
[[0, 0], [0, 1] [1, 0], [1, 1]]
Run Code Online (Sandbox Code Playgroud)
我试图将其翻译为"从索引0切换到0,2,递增2"这对我来说毫无意义.
所以我被赋予了使用遗传算法编写5x5x5井字游戏的问题.我的方法是从3x3开始,使其工作,然后扩展到5x5,然后扩展到5x5x5.
它的工作方式是这样的:
模拟一大堆游戏,并在每个游戏的每个回合中,在相应的表(X表或实现为c ++ stdlib映射的O表)中查找响应.如果电路板不存在,请将电路板添加到表中.否则,进行随机响应.
在我有完整的表格后,我初始化了一堆玩家(每个玩家都有一个董事会表格副本,用随机响应进行初始化),然后让他们互相对抗.
为3×3,贴现板即是反射/其它板的旋转,和电路板,其中所述移动可以是"取胜"或"阻断取胜",板的总数I会遇到要么53或38,这取决于是否你去第一或第二.太棒了!在一小时内生成了最佳玩家.很酷!
使用相同的5x5策略,我知道表的大小会增加,但没有意识到它会大幅增加.即使折扣旋转/反射和强制移动,我的表格约为360万条,看不到尽头.
好吧,这显然不会起作用,我需要一个新的计划.如果我不列举所有的电路板,只是一些电路板,该怎么办?好吧,似乎这也不会起作用,因为如果每个玩家只有一小部分他们可能看到的可能的板,那么他们将会做出很多随机动作,显然是在最优化的相反方向.
实现这一目标的现实方法是什么?我会被困在使用电路板功能吗?目标是尽可能少地编写游戏功能.
我一直在做研究,但我读到的所有内容都会导致最小/最大,AB修剪是唯一可行的选择.我当然可以这样做,但GA真的很酷,我现在的方法只是在这里超过现实.
编辑问题已经解决了:
使用结合开放空间的汉明距离的相似性函数,可能的获胜条件以及一些其他措施使得桌子降低到可管理的2500种可能性,其std::map在几分之一秒内处理.
所以我遇到了一些我继承的代码问题.这个代码在仅限C的环境中正常构建,但现在我需要使用C++来调用此代码.标题problem.h包含:
#ifndef _BOOL
typedef unsigned char bool;
static const bool False = 0;
static const bool True = 1;
#endif
struct astruct
{
bool myvar;
/* and a bunch more */
}
Run Code Online (Sandbox Code Playgroud)
当我将其编译为C++代码时,我得到了 error C2632: 'char' followed by 'bool' is illegal
如果我包装#include "problem.h"in extern "C" { ... }(我不明白,因为bool编译为C时应该没有关键字,我得到同样的错误?)
我试图消除块#ifndef _BOOL到#endif,并编译为C++,和我得到的错误:
error C2061: C requires that a struct or union has at least one member
error C2061: syntax error: identifier …
如果我有例如x = 40我想要以下结果:
40"
Run Code Online (Sandbox Code Playgroud)
对于x = 2.5,结果应该是......
2.5"
Run Code Online (Sandbox Code Playgroud)
所以我基本上想要格式化到最多一个小数位.我目前使用这个:
"{0:0.1f}\"".format(x, 1)
Run Code Online (Sandbox Code Playgroud)
但这显示的只是一个小数位,这不是我想要的......
所以我一直在玩pthreads,特别是试图计算两个矩阵的乘积.我的代码非常混乱,因为它本身应该是一个快速的小有趣的项目,但我使用的线程理论非常类似于:
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#define M 3
#define K 2
#define N 3
#define NUM_THREADS 10
int A [M][K] = { {1,4}, {2,5}, {3,6} };
int B [K][N] = { {8,7,6}, {5,4,3} };
int C [M][N];
struct v {
int i; /* row */
int j; /* column */
};
void *runner(void *param); /* the thread */
int main(int argc, char *argv[]) {
int i,j, count = 0;
for(i = 0; i < M; i++) {
for(j …Run Code Online (Sandbox Code Playgroud) 快速提问:
如果我有这样的枚举:
enum EnumA
{
stuffA = 0
};
enum enumAA
{
stuffA = 1
};
Run Code Online (Sandbox Code Playgroud)
你提到的时候会发生什么stuffA?我以为你会提到他们喜欢EnumA.stuffA和EnumB.stuffA在Java中,但似乎并不如此.
感谢您的任何见解
编辑 - 感谢您的快速回复!
是否this需要指针?如果你在功能上传递指向的类的实例,我想你需要它this.但是在设置/检索/调用/任何成员方面,this总是可选的?
我已经标记了这个C++,因为这是我特别想知道的语言,但是如果有人能够确认Java和其他使用this指针的OO语言的构造是相同的,那么我们将不胜感激.
我有一个简单的问题..这些有什么区别:
struct myinnerstruct
{
int x;
};
struct mystruct
{
struct myinnerstruct m;
int y;
};
Run Code Online (Sandbox Code Playgroud)
还有这个
struct mystruct
{
int x;
struct myinnerstruct
{
int y;
};
struct myinnerstruct m;
};
Run Code Online (Sandbox Code Playgroud)
这些都可以告诉我,但我想知道是否有理由选择其中一个.谢谢
我一直在谷歌搜索,我找不到我正在寻找的答案.
假设我有一个文件,text1.txt在目录中mydir的内容是:
one
two
Run Code Online (Sandbox Code Playgroud)
另一个叫做text2.txt,也是在mydir,其内容是:
two
three
four
Run Code Online (Sandbox Code Playgroud)
我正在尝试获取包含我搜索的所有(不是任何)模式的文件列表(对于给定目录).在我提供的示例中,我正在寻找以下行的输出:
./text1.txt
Run Code Online (Sandbox Code Playgroud)
要么
./text1.txt:one
./text1.txt:two
Run Code Online (Sandbox Code Playgroud)
我能找到的唯一的事情是关于匹配文件中的任何模式,或匹配单个文件中的多个模式(我尝试扩展到整个目录,但收到grep使用错误).
任何帮助深表感谢.
编辑 - 我尝试过的东西
grep "pattern1" < ./* | grep "pattern2" ./*
Run Code Online (Sandbox Code Playgroud)
"模棱两可的重定向"
grep 'pattern1'|'pattern2' ./*
Run Code Online (Sandbox Code Playgroud)
返回与任一模式匹配的文件