目前正在尝试获取名称(字符串) vector 以反向打印。不会用到reverse函数,所以是“手动完成”。到目前为止,就我所拥有的而言, vector 向前打印很好,但是当它向后打印时 - 它能够很好地向后打印前 4 个字符串,然后返回向前打印其余部分。一直坐在那里,只是想不出如何解决它。谢谢。
#include <iostream>
#include <vector>
int main()
{
std::vector<std::string> names { "Jeff", "Jim", "Jerry", "Lisa", "Terry", "Tim", "Tiff"};
std::cout << "This is the vector printing forwards\n";
for (int i = 0; i < names.size(); i++)
{
std::cout << names[i] << std::endl;
}
std::cout << "This is the vector printing backwards\n";
for (int i = 0, j = names.size() - 1; i < names.size(); i++, j--)
{
std::string temp = names[i];
names[i] = names[j];
names[j] = temp;
std::cout << names[i] << std::endl;
}
}
最佳答案
这是因为您要为每个元素交换两次。
对于大小为 4 的 vector :交换操作:
0 3
1 2
2 1
3 0
循环 vector 的一半大小。
for (int i = 0, j = names.size() - 1; i < names.size()/2; i++, j--)
{
std::string temp = names[i];
names[i] = names[j];
names[j] = temp;
}
使用另一个循环打印 vector 。
for (int i = 0; i < names.size(); i++)
{
cout<<names[i]<<endl;
}
关于c++ - 在没有 reverse 函数的情况下反转字符串 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58852617/