我正在尝试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());
Run Code Online (Sandbox Code Playgroud)
STL范围的右边界不包括在内.如果给它两次相同的迭代器,结果是一个空范围.你要这个:
std::copy(itr1,itr2+1,result.begin());
Run Code Online (Sandbox Code Playgroud)
但是,请注意您正在写入没有保留内存的位置,这是未定义的行为.你必须使用back_insert_iterator
std::copy(itr1,itr2 + 1, std::back_inserter(result));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |