Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++;像php?_Php_C++_Matrix_Data Structures - Fatal编程技术网

如何在C++;像php?

如何在C++;像php?,php,c++,matrix,data-structures,Php,C++,Matrix,Data Structures,在php中,您可以创建一个矩阵,如$mat1=array()在不知道数组大小的情况下,在非顺序索引中添加元素,如首先$mat1[1][3]=x然后$mat1[2][0]=y等等。如何在C++中实现? 1D数组也是一样的吗?PHP中有一个关联数组;在C++中被称为“代码> STD::MAP。如果需要int->int->string映射,则需要: std::map< int, std::map< int, std::string > > mat1; std::mapmat1

在php中,您可以创建一个矩阵,如
$mat1=array()
在不知道数组大小的情况下,在非顺序索引中添加元素,如首先
$mat1[1][3]=x
然后
$mat1[2][0]=y
等等。如何在C++中实现?
1D数组也是一样的吗?

PHP中有一个关联数组;在C++中被称为“代码> STD::MAP<代码>。如果需要int->int->string映射,则需要:

std::map< int, std::map< int, std::string > > mat1;
std::map>mat1;
请注意,这不会保留插入键的顺序


如果您事先不知道维度的数量,您可以创建一个递归数据结构,其中每个值都是值类型或映射。

您在PHP中拥有的是一个关联数组;在C++中被称为“代码> STD::MAP<代码>。如果需要int->int->string映射,则需要:

std::map< int, std::map< int, std::string > > mat1;
std::map>mat1;
请注意,这不会保留插入键的顺序

如果您事先不知道维度的数量,可以创建一个递归数据结构,其中每个值都是值类型或映射。

PHP中的数组实际上是一个有序映射。映射是一种将值与键关联的类型。该类型针对多种不同用途进行了优化;可以将其视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等。由于数组值可以是其他数组,所以也可以使用树和多维数组

请点击这里: 和:

PHP中的数组实际上是一个有序映射。映射是一种将值与键关联的类型。该类型针对多种不同用途进行了优化;可以将其视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等。由于数组值可以是其他数组,所以也可以使用树和多维数组

请点击这里:
而且:

实际上,在PHP中,数组的实现是一个有序的hashmap(而不是向量中的数组),这在技术上更为正确。如此类似于C++的映射,但按顺序保存插入不管密钥。在C++中,代码>映射< /COD>按键对元素排序,PHP中不是这样的。@谢里夫:注意有序的哈希映射是关联数组:)。也就是说,第二句和第三句很重要,所以我编辑了答案。(BTW.在C++ W/O中有一个简单、干净、实用的方法来表示保持两个容器或滚动自己的顺序吗?)不一定,不。关联数组有些可疑。在PHP中,数组共享向量/列表的一些特性和hashmap的一些特性。例如,在PHP中,不需要提供键,但键对元素的顺序、访问甚至内存分配都没有影响。这也是PHP的数组实现由3级间接寻址组成的原因。
哈希表
bucket
,以及
bucket
的双链接列表。这解决了你的最后一个问题(没有第三级,你会因为冲突而得到更多的哈希大小调整)。@Sherif:明白你的意思了。因此,你需要一个列表/向量和一个无序的映射(一个有迭代器,另一个有元素),在C++中精确地模仿它,它并没有比这更简单。另外,由于PHP是(好吧,不久前是)动态类型的,所以可以使用
boost::any
@loro来模拟它,谢谢!我曾想过这个,但不确定。我试着检查boost,但一开始似乎有些过火,尽管文档对我来说不是很清楚。我会测试这个方法,如果我还需要什么,我会回来的。实际上,更准确的说法是,在PHP中,数组的实现是一个有序的hashmap(而不是向量中的数组)。如此类似于C++的映射,但按顺序保存插入不管密钥。在C++中,代码>映射< /COD>按键对元素排序,PHP中不是这样的。@谢里夫:注意有序的哈希映射是关联数组:)。也就是说,第二句和第三句很重要,所以我编辑了答案。(BTW.在C++ W/O中有一个简单、干净、实用的方法来表示保持两个容器或滚动自己的顺序吗?)不一定,不。关联数组有些可疑。在PHP中,数组共享向量/列表的一些特性和hashmap的一些特性。例如,在PHP中,不需要提供键,但键对元素的顺序、访问甚至内存分配都没有影响。这也是PHP的数组实现由3级间接寻址组成的原因。
哈希表
bucket
,以及
bucket
的双链接列表。这解决了你的最后一个问题(没有第三级,你会因为冲突而得到更多的哈希大小调整)。@Sherif:明白你的意思了。因此,你需要一个列表/向量和一个无序的映射(一个有迭代器,另一个有元素),在C++中精确地模仿它,它并没有比这更简单。另外,由于PHP是(好吧,不久前是)动态类型的,所以可以使用
boost::any
@loro来模拟它,谢谢!我曾想过这个,但不确定。我试着检查boost,但一开始似乎有些过火,尽管文档对我来说不是很清楚。我会测试这个方法,如果我还需要什么,我会回来的。