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) auto
C++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();
}