有没有办法避免在这些行上写std::vector<int>
两次?
std::vector<int>* numbers = new std::vector<int>(7);
(Typedef不计算。)
答案 0 :(得分:5)
是。仅在C ++ 11中:
auto numbers = new std::vector<int>(7); //C++11 only
此处numbers
的类型由编译器推断,结果是std::vector<int>*
,这是您在代码中编写的内容。< / p>
但是等等。为什么首先使用new
?
你有什么强有力的理由吗?很可能不是。改为使用自动对象:
std::vector<int> numbers; //no new
答案 1 :(得分:4)
0)首先不要使用new
:
std::vector<int> numbers(7);
1)使用typedef
:
typedef std::vector<int> ints;
ints* numbers = new ints(7);
2)在C ++ 11中使用auto
:
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();
}