我正在尝试使用 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/