- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想构建一个 3D 网格并使用包含节点的多维 map ,例如:
std::map<double, std::map<double, std::map<double, pathplanning::Node*> > >
三个 double 是网格中的 (x,y,z) 位置,Node
数据类型是一个简单的类,它封装了一些信息。
我是 cpp 社区的新手,我想问一下:这是一个好方法吗?或者我应该使用一些不同的数据结构?这就是我不使用多维数组的原因:位置可以是负数,数组索引不能。
最佳答案
我的意见是否定的。
使用 std::map(没有指针)。 vector3d 是任何以某种方式持有 3 双有序的结构。一种可能是
struct vector3d
{
double x ;
double y ;
double z ;
} ;
用一个
bool operator<(const vector3d lhs, const vector3d &rhs)
{
if (lhs.x != rhs.x)
return lhs.x < rhs.x ;
if (lhs.y != rhs.y)
return lhs.y < rhs.y ;
return lhs.z < rhs.z ;
}
关于c++ - CPP : Use map for multidimensionality?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31035683/
Perl6 Twitter 模块提供了一个多维变量,其中包含来自搜索查询的推文。这段代码: %tweets[0].say; %tweets[0].say; 打印: es Fri May 04 13:5
只是好奇这是否是在D中初始化动态多维数组的最佳实践。他们的语言引用中有关于数组的部分,但是我不确定它是否超出了我要完成的工作。 class Map { Tile[][] tiles;
我在 golang 中为二维数组使用以下简单代码,其中 APPEND 函数导致重复值而不是追加。 package main import "fmt" func main() { var n i
我刚刚构建了我的第一个 LED 立方体,想稍微扩展一下测试代码。为了寻址我的 3x3x3 立方体的每个 LED,我想使用相应的三维数组,但我在初始化时遇到了错误。 这是我做的: int cube_ma
我需要求解一个线性方程组 Lx=b,其中 x 始终是一个向量(3x1 数组),L 是一个 Nx3 数组,而 b 是一个 Nx1 向量。 N 通常在 4 到 10 之类的范围内。我使用解决这个问题没有问
我有几个问题: 1、isoMDS和cmdscale有什么区别? 2. 我可以使用非对称矩阵吗? 3. 有没有办法确定最佳维度数(结果)? 最佳答案 MDS 方法之一是 distance scaling
我目前正在学习数据库类(class)。之前在看一些关系型数据库的视频,在做研究的时候,碰巧遇到了这个多维索引的话题。出于好奇,我试着读了一点,但我并不完全理解它在说什么,因为它似乎是一个非常高级的话题
这有点复杂;我欢迎就如何提高问题的清晰度提出任何意见。 好的,假设我有一个数组: real, allocatable :: A(:,:,:) 我想在使用它之前分配它。第三维的大小是否可能取决于第二维的
我有一个动态的 3d 数字数组,目前我正在像在 C 中那样做: for (auto i = 0; i < size; i++) { for (auto j = 0; j < size; j++
我最初有一个空矩阵: m = Matrix(0, 3) 和我要添加的行: v = [2,3] 我尝试这样做: [m v] 但我得到一个错误 ERROR: ArgumentError: number
我想知道从文件中读取的几个矩阵的维数。我已经编写了代码来计算矩阵的行数和元素总数,因此知道列数,将元素总数除以行数。 program matrix implicit none inte
假设我有一个多维数组: logic [7:0] mda [7:0]; 我现在要做的是将 mda[7:4] 分配给输出端口,即定义如下: output [31:0] odata; 当然,我可以使用连接来
想象一个菱形等距图,它基本上是一个以 (x,y) 坐标和顶部单元格为原点的二维数组,如单元格中所标记: 我想按以下顺序从后到前遍历这些单元格: 通过未知的同侧 map 以这种方式循环的算法是什么? 预
我无法弄清楚如何在矩阵中的矩阵中获取矩阵的长度(嵌套深度为 3)。所以简而言之,代码所做的是......看看发布者是否已经在数组中,然后它要么在数组中添加一个新列,其中包含一个新的发布者和相应的系统,
我是 Java8 的新手,无法使用流将一个数组映射到另一个二维数组。 我有一个二维数组,它是一种模式: boolean[][] pattern = { {true, true,
m = [] 初始化一个维度为1的空数组。我想初始化一个维度为2的空数组(稍后将在其上附加值。这可能吗? 最佳答案 尝试: m = reshape([],0,2) 要么, m = Array{Floa
如何在Cuda的设备内存中分配和传输2D阵列(与主机之间)? 最佳答案 我找到了解决该问题的方法。我不必弄平阵列。 内置的cudaMallocPitch()功能可以完成这项工作。我可以使用cudaMe
我指的是ndarray crate 以及assert_approx_eq。 我的问题:assert_approx_eq等是否存在类似ndarray::Array2的东西? 目前我正在做: for it
我试图通过逐行拆分顶部和底部行来解决leetcode上的螺旋顺序问题,但我遇到了我无法理解的借位检查器问题。这是产生编译错误的最小示例: pub fn f(mut matrix: &mut [Vec]
我想执行一个循环操作,该操作将执行以下操作(操作必须逐个元素地进行)。 let mut spec = array![] // matrix mxn let exponencial = array![]
我是一名优秀的程序员,十分优秀!