-2

以前は PHP を使用していましたが、PHP が値を渡したり返したりする方法が非常に単純で気に入っています。

現在、パフォーマンスを向上させるために C++ に目を向けましたが、より複雑なデータ構造は言うまでもなく、2 次元配列を渡したり返したりするのが難しいことがわかりました。

  • JSON も選択肢の 1 つかもしれないと思ったことはありますが、この方法では毎回エンコードとデコードを行う必要があり、実用的ではありません。
  • 現在、私はポインタを使用していますが、あまり便利ではありません。
  • 次に、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とreturn配列で簡単に処理できます。
  • しかし、cppでは
    • 結果の配列ポインタを返すか、参照されたベクトルを直接操作する必要があります
    • 配列の長さを関数に渡す必要があります
    • データ構造が複雑な場合、配列から値を取得するのは困難です。
4

2 に答える 2

4

「あらゆる種類」の全体は、実際には C++ ではありません。この言語は、これをサポートすることを意図していません。個々の関数はそれぞれ 1 種類のみを返すことができます。boost::variant のようなものを使用できます。これは多くのタイプの 1 つにすることができます。または、boost::any のようなものを使用できます。これは任意のタイプにすることができますが、使用するのはあまり便利ではありません。もちろん、パフォーマンスのために C++ を使用した場合、これは問題の解決にはなりません。事前に種類を知っておくことは、C++ のパフォーマンスを向上させる重要な要素の 1 つです。

代わりに、強力な静的型付けを扱うことを学ぶことをお勧めします。

于 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 に答える