小编Kon*_*lph的帖子

检查骑士在两点之间的移动是否有效

我正在用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)

c++ algorithm chess

0
推荐指数
1
解决办法
189
查看次数

由于错误的指针算法,memcpy 中的代码崩溃

出于某种原因,我无法理解以下代码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)

c++ pointers memcpy

0
推荐指数
1
解决办法
72
查看次数

提取向量的向量子集

我知道如何从法向量中提取子集,以及如何从另一个向量内的向量中提取子集。我现在的问题是如何提取另一个向量内的所有向量的子集。

例如:我在另一个向量中有三个向量:

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)

最后一次尝试创建一条错误消息。

c++ vector subset

0
推荐指数
1
解决办法
291
查看次数

ClientWebSocket 示例挂起

下页所示的示例不起作用: 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)

c# clientwebsocket

0
推荐指数
1
解决办法
1万
查看次数

如何替换列表中的元素?

我正在尝试编写一个循环,用半个大的元素替换列表中的所有元素。如果列表为 [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)

不工作

python loops

0
推荐指数
1
解决办法
69
查看次数

使用切片在原地反转列表

有人可以帮助我理解为什么s[:]=s[::-1]可以完美运行但s[]=s[::-1]不能吗?

另外,这是否会被视为就地操作(没有额外的内存)?

python algorithm data-structures python-3.x

0
推荐指数
1
解决办法
57
查看次数

类型错误:无法在 HTTPSConnection 中将 str 连接到字节

我正在尝试提出授权请求并提出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)

python http.client

0
推荐指数
1
解决办法
5887
查看次数

如何使用调用函数的对象的参数?

//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 值?

c++ function

0
推荐指数
1
解决办法
48
查看次数

BigInteger.intValue() 在 C# 中等效

我正在尝试将 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,值要么太大要么太小。

我也尝试只使用低字节但没有成功如果有人帮忙,我们将不胜感激

c# java biginteger

0
推荐指数
1
解决办法
81
查看次数

重载函数调用运算符 () 用于模板对象的索引和赋值

我正在尝试为矩阵数据结构创建模板,并且我希望以简洁直观的方式来索引和分配元素(即 '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)

c++ templates operator-overloading

0
推荐指数
1
解决办法
44
查看次数