c++ - 在没有 reverse 函数的情况下反转字符串 vector

标签 c++ string vector

目前正在尝试获取名称(字符串) 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/

相关文章:

c++ - 具有可变参数的提取函数

c++ - 如果附加了 gdb,我该如何中断,但如果没有附加,我该如何继续?

string - 如何在机器人框架中检查字符串是否包含其他字符串(子字符串)?

Swift:字符串中的子字符串(整数/数字)

c++ - 在这种情况下可以使用 std::array(或 boost::array),还是我坚持使用 std::vector 和 native 数组?

c++ - 优化 XML 文件中的标签搜索

c++ - 修改c++头文件后如何重新编译?

java - 空字符串和空字符串的区别

java - 仅当使用自定义 Vector 类时,添加负零浮点结果才为 1.0f

math - OpenCL 向量类型是否使用 SIMD