std::vector<int>このような行に 2 回書かないようにする方法はありますか?
std::vector<int>* numbers = new std::vector<int>(7);
(Typedef はカウントされません。)
はい。C++11 のみ:
auto numbers = new std::vector<int>(7); //C++11 only
ここで、 の型はnumbersコンパイラによって推測されstd::vector<int>*、コードに記述したものであることがわかります。
ちょっと待って。newそもそもなぜ使うのでしょうか?
その強い理由はありますか?ほとんどの場合、そうではありません。代わりに自動オブジェクトを使用してください:
std::vector<int> numbers; //no new
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();
}