Ich studiere Accelerated C++: Practical Programming by Example gerade jetzt, und ich war von der folgenden Frage fest.So drehen Sie einen permutierten Index
#include <iostream>
#include <vector>
#include <cctype>
#include <algorithm>
using namespace std;
vector<string> split(const string&s){
vector<string> ret;
typedef string::size_type string_size;
string_size i=0;
while (i!=s.size()){
while (i!=s.size() && isspace(s[i])){
i++;
}
string_size j=i;
while (j!=s.size() && !isspace(s[j])){
j++;
}
if (i!=j){
ret.push_back(s.substr(i,j-i));
i=j;
}
}
return ret;
}
void Display(vector<string> s){
for (vector<string>::size_type i=0;i!=s.size();i++){
cout<<s[i]<<endl;
}
}
vector<string> Rotation(string&s){
string ss=s+" "+s;
vector<string>s1=split(s);
vector<string>ret;
ret.push_back(s);
string::size_type slength=s.size();
string::size_type count=0;
for (vector<string>::size_type i=0;i!=s1.size()-1;i++){
string k=s1[i];
string::size_type ksize=k.size();
count+=ksize+1;
string pushed=ss.substr(count,slength);
ret.push_back(pushed);
}
return ret;
}
string lower(const string&s){
string ret;
for(string::size_type i=0;i!=s.size();i++){
ret.push_back(tolower(s[i]));
}
return ret;
}
bool compare(const string& s1, const string& s2){
return lower(s1)<lower(s2);
}
int main() {
string s;
cout<<"Enter String"<<endl;
vector<string> vs;
while (getline(cin,s)){
vector<string>Rotated=Rotation(s);
vs.insert(vs.end(),Rotated.begin(),Rotated.end());
}
sort(vs.begin(),vs.end(),compare);
Display(vs);
return 0;
}
I Schritt 1 und 2 (Drehung und Sortierung) beendet haben, aber ich hatte keine Ahnung, wie un drehen zu. Ich habe diese Frage eine Zeit lang gegoogelt, und einige Lösungen sagen, dass ich die Struktur am Anfang initialisieren sollte. Ich frage mich, ob mein aktueller Code den letzten Schritt noch lösen kann, oder ich muss alles ändern, was ich codiert habe.
Warum haben Sie dies mit 'awk' markiert? In jedem Fall - [bearbeiten] Sie Ihre Frage, um eine [mcve] mit prägnanter, testbarer Beispieleingabe und erwarteter Ausgabe bereitzustellen. –
Ich denke, du solltest irgendwo 'std :: rotate' verwenden. – Arunmu
'... was das Auffinden des Separators betrifft 'scheint ein Schlüsselwort zu sein: Es klingt so, als ob man einen künstlichen Marker für das Ende der Nachricht einfügen muss, um _unrotate_ zu können. –