私はC++のコードでいくつかのコーディングをしています。私が扱っていることの多くはデータセットの解析に関係しています。非常に多くの場合、私は、STLコンテナからのいくつかの要素を選択する必要があり、非常に頻繁に私はこのようなコードを書いた:命令言語でSQLを選択する
using std::vector;
vector<int> numbers;
for (int i = -10; i <= 10; ++i) {
numbers.push_back(i);
}
vector<int> positive_numbers;
for (vector<int>::const_iterator it = numbers.begin(), end = numbers.end();
it != end; ++it
) {
if (number > 0) {
positive_numbers.push_back(*it);
}
}
ループとそれに含まれるロジックのための多くは、より複雑で読めなくなります。この時間が経ちます。
SELECT * INTO positive_numbers FROM numbers WHERE num > 0
たくさんあります。このようなコードは、私はむしろSTDよりも「NUM」という名前の列::ベクトルで<整数>をテーブルと呼ばれる数字を持っていると仮定して、SQLで類似のSELECT文未満満足ですより読みやすく、スケーラビリティが向上しました。コードベースにあるif文のロジックの多くは複雑で、順序に依存し、維持不能になっています。私たちがデータベースに行かなくてもC++でSQLのようなステートメントを実行できれば、コードの状態がより良いかもしれないと思います。
C++でSELECT文のようなものを実装できる簡単な方法はありますか?どこのオブジェクトの特性だけを記述してオブジェクトの新しいコンテナを作成できますか?私はまだC++には比較的新しいので、テンプレートのメタプログラミングやこれを解決する巧妙なイテレータの魔法があることを期待しています。ありがとう!
最初の2つの回答に基づいて編集します。ありがとう、私はそれが実際にLINQだったことを知らなかった。主にLinuxとOSXシステムでプログラムを作成し、OSX、Linux、Windowsのクロスプラットフォームに関心があります。 C++のためのLINQのようなものをクロスプラットフォームで実装しているのでしょうか?
ありがとう。私はすでにこのために実装されていた魔法を探していましたが、イテレータとフィルタを使用してあなたの提案を試してみる可能性があります。 –