operator[]
多くの人が述べているように、ベクトルのサイズを変更したり、他の値で埋めたりした場合は、古い値を再割り当てするために使用できます。配列のサイズが常に固定されている場合はstd::array
、 を使用できます。これにより、パフォーマンスが向上しますが、配列のサイズを変更したり、実行時にそのサイズを決定したりする機能が犠牲になります。
std::array<std::string,2> a1;
a1[0] = "world";
a1[1] = "world2";
std::cout<<a1.at(1)<<std::endl; //outputs world2
サイズは静的でなければならないため、次のようなことはできないことに注意してください。
int numStrings;
std::cin>>numStrings;
std::array<std::string,numStrings> a2; //ERROR
std::array
残念ながら、初期化リストを使用する以外に、デフォルトのコンストラクターなしで を初期化する方法はないと思います。
struct T
{
T(std::string s):str(s){} //no default constructor
std::string str;
}
std::array<T,2> a3 = {T(""), ""}; //you can use a conversion constructor implicitly
かなりの数のオブジェクトを含む配列が必要な場合、これは明らかに実用的ではありません。