c++ - 使用 std::copy 复制单个字符

标签 c++ stl

我正在尝试使用 std::copy 从两个不同的迭代器进行复制。但是在执行过程中,这两个迭代器可以指向同一个位置。为什么在这种情况下他们不复制单个字符。

std::string str1 = "ABC";
std::string::iterator itr1 = str1.begin();
std::string::iterator itr2 = str1.begin();
std::string result;
std::copy(itr1,itr2,result.begin());

最佳答案

STL 中范围的右边界不包含在内。如果你给它两次相同的迭代器,结果是一个空范围。你想要这个:

std::copy(itr1,itr2+1,result.begin());

但是,请注意您正在写入一个没有保留内存的位置,这是未定义的行为。您必须使用 back_insert_iterator

std::copy(itr1,itr2 + 1, std::back_inserter(result));

关于c++ - 使用 std::copy 复制单个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6440186/

相关文章:

c++ - protected 数据成员和数据函数

c++ - 32 位应用程序的特征最大矩阵大小

c++ - 通过 std::thread 传递右值

c++ - 与 std::minmax_element 一起使用的步长/步幅迭代器

c++ - 迭代集合并集的简洁方法?

c++ - 为什么 STL 为 std::container::begin 和 std::container::end 函数提供 const 重载?

c++ - 为什么 C++ STL 使用 RBtree 来实现 "std::map"?

c++ - C++中具有相同名称但成员不同的结构

c++ - 纯虚方法返回一个对象?

Java -> 使用 SWIG over JNI 的 C++ 通信。防止 C++ 错误和内存泄漏