Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/158.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# 传递数组指针以放置在C+中的哈希映射中+; 我有点新的C++(来自C语言)。< /P>_C#_C++_Pointers_Parameter Passing_Native - Fatal编程技术网

C# 传递数组指针以放置在C+中的哈希映射中+; 我有点新的C++(来自C语言)。< /P>

C# 传递数组指针以放置在C+中的哈希映射中+; 我有点新的C++(来自C语言)。< /P>,c#,c++,pointers,parameter-passing,native,C#,C++,Pointers,Parameter Passing,Native,我想将数据数组传递给函数(作为指针) 这些数据将被添加到hashmap(一些基于键值的对象)中 在C#中,我只需将传递的引用添加到字典中,就可以使用它了 C++中也可以这样做吗?或者我必须创建数据的副本,并且只将其添加到数据结构中以存储它 我在一些代码示例中见过这种模式,但我不能100%确定为什么需要它,或者在某些时候是否可以避免它。不确定您的密钥来自何处。。。但是std::map和std::unordered_map可能就是您要找的 现在,std::map的底层数据结构是一个二叉树,而std

我想将数据数组传递给函数(作为指针)

这些数据将被添加到hashmap(一些基于键值的对象)中

在C#中,我只需将传递的引用添加到字典中,就可以使用它了

C++中也可以这样做吗?或者我必须创建数据的副本,并且只将其添加到数据结构中以存储它


我在一些代码示例中见过这种模式,但我不能100%确定为什么需要它,或者在某些时候是否可以避免它。

不确定您的密钥来自何处。。。但是
std::map
std::unordered_map
可能就是您要找的

现在,
std::map
的底层数据结构是一个二叉树,而
std::unordered_map
是一个散列


<>代码> STD::unOrdEdEdMult/Cux>是C++ 11标准中的一个附加项。

< P>这完全取决于如何传递数据以及如何创建数据。如果数据是在堆上创建的(通过使用new),您可以将指向它的指针或引用放在表中。另一方面,如果函数按值获取参数,则需要在某个点进行复制,因为如果存储临时变量的地址,则会发生不好的事情:)

至于使用什么样的数据结构,以及它们如何工作,我发现最好的参考之一是

堆分配应该为特殊情况保留。堆栈分配更快、更易于管理,您应该仔细阅读(非常重要)。至于其他阅读,试着找出动态和自动内存分配的内容


<> P>刚刚发现读明确地说C + C++对你来说是完美的,好运C++可以成为更难学习的语言之一,所以不要假设任何事情都会和C语言中的一样。有一个不错的C语言和C++的东西,但是

确切的数据结构与我的问题无关。我很想知道是否可以使用指针传递给其他对象,即使在这个方法返回之后(我不知道该指针之后会发生什么)。哦,是的,它什么也不做。没有垃圾收集。指针只存储在hashmap中。完成后,您必须删除指针中的内存。谢谢。你能给我指点一下C++中不同的分配选项的阅读材料吗?(堆对值)@麦角酸,C++中的一些窍门是,你可以有一个函数签名,它带有一个引用或指针,但并不意味着它是动态分配的。大多数人都说,如果你知道C++,你就不应该使用新的,你可以通过聪明的方法来管理C++。pointers@lysergic-酸为什么否决票我的票有问题吗answer@lysergic-酸好的,我不好,我想这是一个报复性的否决票,现在我的回答感觉没用了
void someFunc(byte *data)
{
    // add this data to a hashmap.

    Hashtable.put(key, data)
}