【问题标题】:How to reverse a vector of strings in C++? [duplicate]如何在 C++ 中反转字符串向量? [复制]
【发布时间】:2012-06-13 16:57:55
【问题描述】:

我有一个字符串向量,我想反转向量并打印它,或者简单地说,以相反的顺序打印向量。我该怎么做呢?

【问题讨论】:

  • 这是非常基本的东西。你为什么不谷歌这个?
  • @EitanT:这是非常基本的东西。为什么不涵盖它? ;-)
  • @EitanT:StackOverflow 的最终使命是,每当您在 Google 上搜索任何主题问题时,最重要的结果就是针对您的问题的 StackOverflow 问题,并提供一个很好的答案。因此,人们可以向 Google 提出问题,只要他们不是受骗者(实际上,如果由于某种原因,SO 的搜索在您输入时还没有向您抛出受骗者,那么问受骗者也可以)问题)。
  • 我认为这不是骗局。在链接到的问题中,目标很明确:反转向量。然而,在这个问题中,目标并不明确:他是想反转一个向量,还是以相反的顺序打印一个向量?
  • @Robᵩ:那是两个单独的问题,在这种情况下,它需要分成两个不同的帖子。第一个问题,我认为是主要问题(因为它是第一个问题,因为它在标题中)肯定是重复的。

标签: c++ string printing vector


【解决方案1】:

如果你想以相反的顺序打印矢量:

#include <algorithm>
#include <iterator>
#include <iostream>
#include <vector>
#include <string>

std::copy(v.rbegin(), v.rend(), 
  std::ostream_iterator<std::string>(std::cout, "\n"));

如果要反转向量,然后打印出来:

std::reverse(v.begin(), v.end());
std::copy(v.begin(), v.end(),
  std::ostream_iterator<std::string>(std::cout, "\n"));

如果您想创建矢量的反向副本并打印:

std::vector<std::string> r(v.rbegin(), v.rend());
std::copy(r.begin(), r.end(),
  std::ostream_iterator<std::string>(std::cout, "\n"));

最后,如果您更喜欢编写自己的循环而不是使用&lt;algorithm&gt;

void print_vector_in_reverse(const std::vector<std::string>& v){
  int vec_size = v.size(); 
  for (int i=0; i < vec_size; i++){ 
    cout << v.at(vec_size - i - 1) << " ";
  }
}

或者,

void print_vector_in_reverse(std::vector<std::string> v) {
  std::reverse(v.begin(), v.end());
  int vec_size = v.size();
  for(int i=0; i < vec_size; i++) {
    std::cout << v.at(i) << " ";
  }
} 

参考资料:

【讨论】:

  • 我收到这些错误,是否必须包含任何特定指令? a3p2.cc:在函数'void print_vector(std::vector<:basic_string> >)'中:a3p2.cc:73:6:错误:'ostream_iterator'不是'std'a3p2.cc的成员:73:39:错误:“>”标记之前的预期主表达式
  • @Hoomanium:对于答案中提到的功能,您必须包括&lt;algorithm&gt;&lt;string&gt;&lt;iterator&gt;
  • 我有 但没有 。现在添加...
  • 这是我当前的代码: void print_vector(vector v){ int vec_size = v.size(); for (int i=0; i
  • @Hoomanium - 不,如果没有完整的示例程序,我无法告诉你你错在哪里(请参阅sscce.org 以获得解释)。但为了您的利益,我已经编辑了我的答案。
猜你喜欢
  • 2016-05-03
  • 2013-07-11
  • 2017-06-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-03
  • 2020-02-27
相关资源
最近更新 更多