我有一个关于"push_back()"的问题,reverse_iterator


#include<string>
#include<iterator>
#include<vector>
#include<iostream>
int main(){
std::string str = "abc";
std::string str2 = str;
std::vector<int>::reverse_iterator rit = str.rbegin();
for(rit+1; rit != str.rend(); rit++){
str2.push_back('*rit');
}
std::cout << str2 << std::endl;
}

我希望输出为"abcba",但push_back((中似乎出现了错误。有人帮我T_T

对于初学者来说,有一个拼写错误(或者您想突出显示表达式(

str2.push_back('*rit');

你的意思似乎是

str2.push_back( *rit);

此申报

std::vector<int>::reverse_iterator rit = str.rbegin();

没有道理。声明的对象和用作初始值设定项的正确表达式具有不同的类型,它们之间没有隐式转换。

您需要的是以下

std::string str = "abc";
std::string str2 = str;
str2.append( str.rbegin(), str.rend() );
std::cout << str2 << 'n';

或者你可以写

std::string str = "abc";
std::string str2 = str;
for (std::string::reverse_iterator it = str.rbegin(); it != str.rend(); ++it)
{
str2.push_back( *it );
}
std::cout << str2 << 'n';

或者for循环可以像一样编写

for (auto it = str.rbegin(); it != str.rend(); ++it)

相关内容

  • 没有找到相关文章

最新更新