0

如果是这样,我们可以假设数组末尾会有一个空终止符吗?

4

2 回答 2

2

vector复制构造函数不只是将指针复制到向量的内部存储;它会复制另一个向量的内容。(如果它只是复制了一个指针,那么对一个向量所做的更改将反映在另一个向量中,并且如您所知,这不是vector该类的行为方式。)

此外,不能保证有任何特殊标记向量的内部存储结束。(并且内部存储不一定是数组。)要检测向量的结尾,请使用该size函数来帮助确定向量允许的最高索引,或将迭代器与end. 不要寻找哨兵值,除非你自己放了一个,或者你的图书馆文档告诉你期待一个。

于 2012-02-24T18:16:00.923 回答
0

大概你在谈论std::vector<T>. 那是复制构造函数,它不需要数组的地址,而是对另一个向量的 const 引用。您,该其他向量的提供者,不需要添加终止空值。

std::vector<int> mine;
std::vector<int> theirs(mine);  // no particular change required for mine
于 2012-02-24T18:17:37.673 回答