如果是这样,我们可以假设数组末尾会有一个空终止符吗?
答案 0 :(得分:2)
vector
复制构造函数不只是将指针复制到向量的内部存储区;它会生成另一个向量内容的副本。 (如果它只是复制了一个指针,那么对一个向量的更改将反映在另一个向量中,如您所知,这不是vector
类的行为方式。)
此外,无法保证向量内部存储的末尾有任何特殊标记。 (并且内部存储不一定是数组。)要检测向量的结尾,请使用size
函数来帮助确定向量的最高允许索引,或者将迭代器与{返回的迭代器进行比较。 {1}}。不要寻找哨兵价值,除非你自己放一个,或者你的图书馆文件告诉你期望一个。
答案 1 :(得分:0)
大概你在谈论std::vector<T>
的构造函数。那是复制构造函数,它不接受数组的地址,而是接受另一个向量的const引用。您,该另一个向量的提供者,不需要添加终止空值。
std::vector<int> mine;
std::vector<int> theirs(mine); // no particular change required for mine