有没有办法避免std::vector<int>
在这样的行上写两次?
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();
}