Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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++_Return Value - Fatal编程技术网

C++ 传递和返回值的策略(任何类型,包括数组或更复杂的数据结构)?

C++ 传递和返回值的策略(任何类型,包括数组或更复杂的数据结构)?,c++,return-value,C++,Return Value,我曾经使用PHP,我喜欢PHP传递和返回值的方式,非常简单 现在我已经转向C++来获得更多的性能,但是发现通过和返回2D数组是困难的,更不用说一些更复杂的数据结构了。 我曾经认为JSON可能是一种选择,但这种方式每次都必须编码和解码,不实用 目前我正在使用指针,但它不是很方便 然后我尝试了STL向量,仍然不满意,STL向量使用起来有点安全和舒适,但仍然需要手动迭代数组,我想要的是一种更灵活的策略来处理这类任务 我尝试使用class/struct来保存数据,然后传递和返回,但是每当传递不同类型的

我曾经使用PHP,我喜欢PHP传递和返回值的方式,非常简单

现在我已经转向C++来获得更多的性能,但是发现通过和返回2D数组是困难的,更不用说一些更复杂的数据结构了。
  • 我曾经认为JSON可能是一种选择,但这种方式每次都必须编码和解码,不实用
  • 目前我正在使用指针,但它不是很方便
  • 然后我尝试了STL向量,仍然不满意,STL向量使用起来有点安全和舒适,但仍然需要手动迭代数组,我想要的是一种更灵活的策略来处理这类任务
  • 我尝试使用class/struct来保存数据,然后传递和返回,但是每当传递不同类型的数据结构时,我都必须定义一个新的struct
那么,函数间数据交换的最佳选择是什么? 专业人士,有什么建议吗

编辑:

例如:

string function(string data){

//do something

return result;

}
如果此结果类似于:

{
  "key1"=>{"key11"=>"value1"},
  "key2"=>{"key21"=>"value2"},
  "key3"=>{"key31"=>"value3","key32"=>"value32"}
}
用指针传递这个太复杂了,不是吗? 使用php,您可以使用几个foreach语句轻松地处理嵌套数组

编辑2:

简单地说,如何交换长度和维度未知的嵌套数组

编辑3:

我试图找到cpp处理常见编程任务的方法。函数之间的数据交换非常重要

  • 在php中,我可以用几个foreach轻松地处理嵌套数组并返回数组
  • 但是有了cpp
    • 我必须返回结果数组指针或直接操作引用的向量
    • 我需要将数组长度传递给函数
    • 当数据结构复杂时,很难从数组中获取值

整个“任何种类”的东西都不是C++。该语言不支持这一点。每个单独的函数只能返回一种东西。您可以使用boost::variant(可以是多种类型中的一种)或boost::any(可以是任何类型,但使用起来不是很方便)。当然,如果你转向C++来执行性能,这将不会有帮助。提前知道这些类型是提高C++性能的关键因素之一。p> 因此,我建议您只需学习处理强静态类型。

map magic;
map<string, map<string, string>> magic;
magic["key1"]["key11"] = "value1";
magic["key2"]["key21"] = "value2";
magic["key3"]["key31"] = "value3";
magic["key3"]["key32"] = "value32";
魔术[“键1”][“键11”]=“值1”; 魔术[“键2”][“键21”]=“值2”; 魔术[“键3”][“键31”]=“值3”; 魔术[“键3”][“键32”]=“值32”;
我建议您阅读一本教科书。调用函数时,您需要知道它们返回的数据类型以及如何处理该类型的数据。如果函数返回适当类型和合理值(例如空列表而不是空值),使用它们是微不足道的,如您所知(如果我们遵循该示例),您可以总是在返回的列表上迭代,它可能只是一个列表。“Abyx我正在阅读一本叫做C++的程序如何编写,第五版由H.M.Deel.但却找不到答案。看来你想吃蛋糕了。cpp更有效的一个主要原因是它的强类型。我确信这需要一些调整,但我认为这是你必须做的,而不是像你仍然在使用PHP一样进行编程。@thecoshman目前我可以处理最基本的情况,比如int、char、string、1d数组、2d数组、vectors,但是如果你想返回像{“key1”=>{“key11”=>“value1”}、“key2”这样的东西怎么办=>{“key21”=>“value2”},或者更复杂?好吧,我知道cpp/java是强大的类型语言,我不是想把我以前的php经验和cpp混为一谈,而是想找到cpp方法来处理常见的编程任务。函数之间的数据交换非常重要。在php中,我可以轻松地用serveral foreach处理嵌套数组,但使用cpp,我发现它很复杂。这可能是一个解决方案,我是一个新手,仍然不熟悉STL映射。。。谢谢你的建议。如果你“仍然不熟悉STL地图”,你还在这里做什么?去把它修好。@R.MartinhoFernandes是的,先生!学习STL地图。。。