我不想使用std :: copy ...他的这个正确的for-loop替代方案?

use*_*712 0 c++ stl

我试图不使用STL.我的代码中有这一行:

std::copy(buffer_, buffer_ + size_ + 1, new_buffer)
Run Code Online (Sandbox Code Playgroud)

如果我不想使用副本,这是正确的等价物吗?

for (int i = 0; i < (size_ + 1); i++){
    new_buffer[i] = buffer[i];
}
Run Code Online (Sandbox Code Playgroud)

还是完全错了?还是一个人呢?或者是其他东西?

谢谢!

Mys*_*ial 5

好的,您拥有的两个代码示例将给出相同的结果.

但是,如果使用,则会出现一个一个错误size_ + 1.Just size_是正确的值,因为它已指向一个超过最后一个元素的值.

  • 你什么意思?两个版本中缓冲区的大小都是"size_ + 1".没有错误. (2认同)
  • @Kerrek:Mysticial是正确的,`i <(size_ + 1)`将在结束时迭代一次.与`std :: copy`版本相同. (2认同)