我正在用C++做一个国际象棋项目.我正在尝试检查2D阵列中的有效骑士移动.
我有玩家this->getLocX(),this->getLocY()变量的旧位置(玩家所在的位置)和我有x,y(这是玩家想要将他的骑士移入的地方).
如何以最佳方式检查有效性?这是我的解决方案,但我想知道是否有更好的方法.
if (x == this->getLocX() + 1 && y == this->getLocY() + 2 || x == this->getLocX() - 1 && y == this->getLocY() + 2 || y == this->getLocY() + 1 && x == this->getLocX() + 2 || y == this->getLocY() + 1 && x == this->getLocX() - 2 || x == this->getLocX() - 1 && y == this->getLocY() + 2 || x == this->getLocX() + 1 && y == this->getLocY() - 2 || …Run Code Online (Sandbox Code Playgroud) 出于某种原因,我无法理解以下代码memcpy在循环中的第二个崩溃(没有任何错误消息;gcc 7.4.0 Ubuntu 16.04,QT5)所以我猜我的指针算法是错误的,但我不明白为什么:
#include <stdio.h>
#include <string.h>
#define ROWS 48
#define COLS 48
#define CHANNELS 3
#define NUM_PIX ((ROWS) * (COLS) * (CHANNELS))
struct MyImage
{
int width;
int height;
int channels;
unsigned char rawData[NUM_PIX];
};
int main()
{
const int numIm = 16;
MyImage theClsImArr[numIm];
unsigned char ImArr[numIm][ROWS][COLS][CHANNELS];
int Bytes2Copy = NUM_PIX * sizeof(unsigned char);
for (int i = 0; i < numIm; i++ )
memcpy(theClsImArr[i].rawData,ImArr + i * NUM_PIX ,Bytes2Copy ); // works when i …Run Code Online (Sandbox Code Playgroud) 我知道如何从法向量中提取子集,以及如何从另一个向量内的向量中提取子集。我现在的问题是如何提取另一个向量内的所有向量的子集。
例如:我在另一个向量中有三个向量:
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
Run Code Online (Sandbox Code Playgroud)
我现在想做的是创建一个新向量,其中包含每个向量的第三个和第四个元素的子集。我试过这个:
#include<vector>
#include <iostream>
int main()
{
std::vector<std::vector<int>> my_vec;
std::vector<int> vec_1{1,2,3,4,5};
std::vector<int> vec_2{11,12,13,14,15};
std::vector<int> vec_3{21,22,23,24,25};
my_vec.push_back(vec_1);
my_vec.push_back(vec_2);
my_vec.push_back(vec_3);
// For a normal vector
std::vector<int> vec_1_subset(vec_1.begin()+2,vec_1.begin()+4);
for (auto& element: vec_1_subset)
{
std::cout<<element<<std::endl;
}
// For extracting from a single vector inside another vector
std::vector<int> my_vec_subset((my_vec[0]).begin()+2,(my_vec[0]).begin()+4);
for (auto& element: my_vec_subset)
{
std::cout<<element<<std::endl;
}
// For several vectors inside a vector ?
std::vector<std::vector<int>> my_vec_test_subset(my_vec.begin()+2,my_vec.begin()+4);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
最后一次尝试创建一条错误消息。
下页所示的示例不起作用: Using c# ClientWebSocket with Streams
它挂在以下行上:
等待 ws.ConnectAsync(serverUri, CancellationToken.None);
看来连接尚未建立。
请指出使以下代码工作的最简单的修改。我不想使用任何第三方工具或库。
private static async Task DoClientWebSocket()
{
using (ClientWebSocket ws = new ClientWebSocket())
{
Uri serverUri = new Uri("wss://echo.websocket.org/");
await ws.ConnectAsync(serverUri, CancellationToken.None);
while (ws.State == WebSocketState.Open)
{
string msg = "hello123";
ArraySegment<byte> bytesToSend = new ArraySegment<byte>(Encoding.UTF8.GetBytes(msg));
await ws.SendAsync(bytesToSend, WebSocketMessageType.Text, true, CancellationToken.None);
ArraySegment<byte> bytesReceived = new ArraySegment<byte>(new byte[1024]);
WebSocketReceiveResult result = await ws.ReceiveAsync(bytesReceived, CancellationToken.None);
Console.WriteLine(Encoding.UTF8.GetString(bytesReceived.Array, 0, result.Count));
}
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个循环,用半个大的元素替换列表中的所有元素。如果列表为 [1,2,3,4],则新列表应为 [0.5,1,1.5,2]。无需创建新列表!
我尝试了以下
for i in Glist:
i = Glist[i]/2
Glist.append(i)
Run Code Online (Sandbox Code Playgroud)
和热错误:列表索引超出范围如何停止循环?
也试过这个:
for i in mylist:
i = i/2
mylist.append(i)
Run Code Online (Sandbox Code Playgroud)
不工作
有人可以帮助我理解为什么s[:]=s[::-1]可以完美运行但s[]=s[::-1]不能吗?
另外,这是否会被视为就地操作(没有额外的内存)?
我正在尝试提出授权请求并提出TypeError: can't concat str to bytes. 我在网上搜索并发现了类似的问题,但没有一个可以帮助解决我的问题。我目前正在 Jupyter 工作(如果有帮助的话?)而且我是一个 python 菜鸟,所以请温柔一些......
这是我的代码:
import http.client as httplib
import urllib.request, urllib.parse, urllib.error, base64
import requests as rq
base_url = 'api/url'
end_point = '/endpoint'
full_url = base_url + end_point
request_body = {
'UserName':'un',
'Password':'pw'
}
header = {
'tenant': 'tenant name' #required by vendor
}
print(type(base_url))
print(type(end_point))
print(type(full_url))
print(type(request_body))
print(type(header))
try:
conn = httplib.HTTPSConnection(base_url)
conn.request(method='POST',url=full_url, body=request_body, headers=header)
response = conn.getresponse()
data = response.read()
print(type(data))
print(data)
conn.close()
except Exception as e:
print("[Errno …Run Code Online (Sandbox Code Playgroud) //Function to find the distance between 2 points
TLength CPoint::Distance(const CPoint& point) const
{
TLength horiz = abs(point.X() - OBJECT.X());
TLength vert = abs(point.Y() - OBJECT.Y());
TLength dist = sqrt(pow(horiz,2) + pow(vert,2));
return dist;
};
int main()
{
const CPoint a = CPoint(4,5);
const CPoint b = CPoint(1,1);
a.Distance(b);
};
Run Code Online (Sandbox Code Playgroud)
是否有一个术语可以代替 OBJECT 来使用函数 Distance 中的 a 值?
我正在尝试将 Java 代码转换为 C#,但在处理 BigInteger 操作时遇到了问题。我找到了一些关于 C# 中 BigInteger 实现和 intValue 本身的资源。但是没有关于 C# 中 BigInteger.intValue 等价物的线索。Java中的定义是:
将此 BigInteger 转换为 int。这种转换类似于 Java™ 语言规范第 5.1.3 节中定义的从 long 到 int 的缩小原始转换:如果此 BigInteger 太大而无法放入 int,则仅返回低 32 位。注意此转换可能会丢失有关 BigInteger 值的整体大小的信息,并会返回具有相反符号的结果。
但是在 C# 中使用 (int) 获得类似的结果会导致错误:
对于 Int32,值要么太大要么太小。
我也尝试只使用低字节但没有成功如果有人帮忙,我们将不胜感激
我正在尝试为矩阵数据结构创建模板,并且我希望以简洁直观的方式来索引和分配元素(即 'A(i,j)' 返回一个元素和 'A(i,j)=x ' 为该元素分配一个值。)
根据其他论坛主题,我看到通过引用返回数组元素,函数/运算符可以以这种方式返回和更改该元素。
template <typename T, int Rows, int Cols>
struct Matrix {
private:
public:
const int rows = Rows; //number of rows
const int cols = Cols; //number of columns
T data[Rows*Cols]; //contents of matrix
//Single element indexing and assigment
T& operator() (int i, int j) {
return data[ (i-1)*(this->cols) + j ];
}
};
int main(){
const int m = 3;
const int n = 4;
Matrix<float, m, n> A;
for (int i = …Run Code Online (Sandbox Code Playgroud)