1

std::vector<int>このような行に 2 回書かないようにする方法はありますか?

std::vector<int>* numbers = new std::vector<int>(7);

(Typedef はカウントされません。)

4

2 に答える 2

5

はい。C++11 のみ:

auto numbers = new std::vector<int>(7); //C++11 only

ここで、 のnumbersコンパイラによって推測されstd::vector<int>*、コードに記述したものであることがわかります。

ちょっと待って。newそもそもなぜ使うのでしょうか?

その強い理由はありますか?ほとんどの場合、そうではありません。代わりに自動オブジェクトを使用してください:

std::vector<int> numbers; //no new
于 2012-06-13T12:57:20.580 に答える
4

0) そもそも使用しないnew:

std::vector<int> numbers(7);

1) を使用typedef:

typedef std::vector<int> ints;
ints* numbers = new ints(7);

2) autoC++11 での使用:

auto numbers = new std::vector<int>(7);

3) どうしてもポインターを使用する場合は、スマート ポインターを使用します。

std::unique_ptr<std::vector<int>> numbers(new std::vector<int>(7));

4) メーカー機能を使用する:

typedef std::vector<int> ints;
std::unique_ptr<ints>&& make_ints()
{
    return std::unique_ptr<ints>(new ints(7));
}

int main()
{
    std::unique_ptr<ints> numbers = make_ints();
}
于 2012-06-13T12:57:10.647 に答える