3

こんにちは、私はこのようにC++で配列を初期化したいです

int array[10]={1,2,3,4,5,6,7,8,9,10};

しかし、私は新しい演算子を使用しています。

以下のようにして、反復して値を割り当てることができることを知っています

shared_ptr<int[]> l (new int[7]);

しかし、新しいコマンド中にそれを初期化できる方法があれば本当に大好きです

このようなものですshared_ptr<int[]> l (new int[7] ={1,2,3,4,5,6,7}); が、残念ながらこれは有効な構文ではありません。

また、C++ 11 標準では、新しい STL コンテナー配列が追加されています。通常の配列または STL 配列のどちらを使用してこれを達成できるかを誰か教えてください。

4

2 に答える 2

9

C++11 は、コンテナに次のinitializer_listように機能する を提供します。

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

vector動的配列クラスです


これがあなたの shared_ptr バージョンです:

std::shared_ptr<int> ptr(new int[5]{1,2,3,4,5}, std::default_delete<int[]>());
于 2013-03-03T08:04:27.487 に答える
0

C++11 と均一な初期化により、次のことが可能になります。

int main()
{
    int* p = new int[10] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    // ...
    delete[] p;
}

ライブデモ

于 2013-03-03T11:36:39.840 に答える