-2

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

现在我转向 C++ 以获得更高的性能,但发现很难传递和返回二维数组,更不用说一些更复杂的数据结构了。

  • 我曾经认为 JSON 可能是一种选择,但是这样你每次都必须编码和解码,不切实际。
  • 目前我正在使用指针,但这不是很方便。
  • 然后我尝试了 STL 向量,还是不满意,STL 向量使用起来更安全舒适一些,但仍然需要手动迭代数组,我想要的是更灵活的策略来处理这类任务
  • 我尝试使用类/结构来保存数据,然后传递和返回,但是每当传递不同类型的数据结构时,我都必须定义一个新结构。

那么,函数间数据交换的最佳选择是什么?专业人士,有什么建议吗?

编辑:

举个例子:

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
    • 我必须返回结果数组指针或直接操作引用的向量
    • 我需要将数组长度传递给函数
    • 当数据结构复杂时,很难从数组中获取值。
4

2 回答 2

4

整个“任何种类”的东西真的不是 C++。该语言不打算支持这一点。每个单独的函数只能返回一种东西。您可以使用类似 boost::variant 的东西,它可以是多种类型中的一种,或者 boost::any,它可以是任何类型,但使用起来不是很方便。当然,如果你为了性能而转向 C++ ,这无济于事——预先了解各种类型是提高 C++ 性能的关键因素之一。

因此,我建议您改为学习处理强静态类型。

于 2013-10-01T15:26:36.437 回答
1
map<string, map<string, string>> magic;
magic["key1"]["key11"] = "value1";
magic["key2"]["key21"] = "value2";
magic["key3"]["key31"] = "value3";
magic["key3"]["key32"] = "value32";
于 2013-10-01T15:29:37.770 回答