1

有没有办法避免std::vector<int>在这样的行上写两次?

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)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();
}
于 2012-06-13T12:57:10.647 回答