嘿伙计们我试图交换并旋转我的顶点90度但是当我打印时它只显示
何时显示
我知道我的问题是,当我交换它们时,顶点没有足够的空间,因为当我推动tom和cat制作顶点时[3] [2]但是现在我正在尝试制作它[2] [ 3]所以我知道这是问题,我试图保留空间,但不会工作,因为它只会覆盖那里的任何东西。所以任何帮助都会让人感到非常感谢
#include <iostream>
#include <string>
#include <vector>
int main() {
std::vector<std::string> lines;
//lines.reserve(100);
lines.push_back("tom");
lines.push_back("cat");
for(int r = 0; r < lines.size(); r++)//swapping
{
for(int c = r; c < lines[r].size(); c++)
{
std::swap(lines[r][c], lines[c][r]);
}
}
for(int r = 0; r < lines.size(); r++)//where I am rotating
{
for(int c =0; c < lines[c].size()/2; c++)
{
std::swap(lines[r][c], lines[r][lines[c].size()-c-1]);
}
}
for(int i=0; i<lines.size(); i++)
std::cout << lines[i] << "\n";
return 0;
}
答案 0 :(得分:0)
使用两个向量。
#include <iostream>
#include <sstream>
#include <string>
#include <utility>
#include <vector>
using namespace std;
int main(int argc, char const *argv[])
{
vector<string> v1;
vector<string> v2;
v1.push_back("tom");
v1.push_back("cat");
for (auto& it : v1) {
cout << it << endl;
}
swap(v1.front(), v1.back());
for (auto& it : v1) {
cout << it << endl;
}
auto first = v1.front();
auto last = v1.back();
for (string::iterator it1 = first.begin(), it2 = last.begin(); it1 != first.end(); ++it1, ++it2) {
stringstream ss;
string s;
ss << *it1 << *it2;
ss >> s;
v2.push_back(s);
}
for (auto& it : v2) {
cout << it << endl;
}
return 0;
}
输出
tom
cat
cat
tom
ct
ao
tm