ホームページ >バックエンド開発 >C++ >C でベクトルをエレガントに初期化するにはどうすればよいですか?

C でベクトルをエレガントに初期化するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-21 11:33:14172ブラウズ

How Can I Elegantly Initialize Vectors in C  ?

ベクトルの初期化の簡素化: エレガントなハードコーディング オプション

配列のカスタム初期化子の作成は、標準的で簡単な方法です。ただし、ベクトルに関しては、同様のメカニズムを見つけるのが少し難しい場合があります。本質的な疑問は、ベクトルを配列と同じくらいきれいに初期化する方法が存在するかどうかです。解決策を見てみましょう。

あなたが言及したように、標準的なアプローチには、push_back 操作が含まれます。

std::vector<int> ints;
ints.push_back(10);
ints.push_back(20);
ints.push_back(30);

このメソッドはその目的を果たしますが、配列の初期化の優雅さには適合しません。

C 11 の括弧付き初期化

C 11 および GCC 4.4 などの互換性のあるコンパイラを使用すると、ベクトルの中括弧で囲まれた初期化を採用できます。

std::vector<int> v = {1, 2, 3, 4};

この構文は、ベクトルを初期化するための簡潔かつ明示的な方法を提供します。 .

Boost.Assign Library

もう 1 つの方法は、Boost.Assign ライブラリを利用することです。ベクトル初期化のためのさまざまな手法が提供されています:

list_of の使用:

#include <boost/assign/list_of.hpp>
...
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);

= 表記の使用:

#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
...
std::vector<int> v;
v += 1, 2, 3, 4;

ただし、Boost.Assign はパフォーマンスのオーバーヘッドを伴うことに注意してください。その根底にあるメカニズムによるものです。パフォーマンス重視のコードの場合は、push_back アプローチを検討してください。

以上がC でベクトルをエレガントに初期化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。