如何在 C 中反转字符串向量? | 珊瑚贝

How to reverse a vector of strings in C++?

本问题已经有最佳答案,请猛点这里访问。


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

  • 这是非常基本的东西。你为什么不谷歌这个?
  • @EitanT:这是非常基本的东西。为什么不涵盖它? ;-)
  • @SteveJessop 不确定我是否在关注你 :)
  • @EitanT:StackOverflow 的最终使命是,每当您在 Google 上搜索任何主题问题时,最重要的结果就是针对您的问题的 StackOverflow 问题,并提供一个很好的答案。因此,人们可以向 Google 提出问题,只要他们不是受骗者(实际上,如果由于某种原因,SO 的搜索在您输入时还没有向您抛出受骗者,那么问受骗者也可以)问题)。
  • 我认为这不是骗局。在链接到的问题中,目标很明确:反转向量。然而,在这个问题中,目标并不明确:他是想反转一个向量,还是以相反的顺序打印一个向量?
  • @SteveJessop 我明白你的意思。但是这个问题仍然没有显示出任何研究成果,不是吗?那何必费尽心思呢?
  • @Robáμ?:那么这是两个单独的问题,在这种情况下,它需要分成两个不同的帖子。第一个问题,我认为是主要问题(因为它是第一个,并且因为它在标题中)绝对是重复的。
  • 我认为将类型指定为字符串的原因是因为字符串也应该反转。


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

1
2
3
4
5
6
7
8
9
#include
#include <iterator>
#include <iostream>
#include <vector>
#include <string>

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

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

1
2
3
4
std::reverse(v.begin(), v.end());
std::copy(v.begin(), v.end(),
  std::ostream_iterator<std::string>(std::cout,\
));

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

1
2
3
4
std::vector<std::string> r(v.rbegin(), v.rend());
std::copy(r.begin(), r.end(),
  std::ostream_iterator<std::string>(std::cout,\
));

最后,如果您更喜欢编写自己的循环而不是使用 :

1
2
3
4
5
6
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) <<“”;
  }
}

或者,

1
2
3
4
5
6
7
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) <<“”;
  }
}

参考文献:

  • http://en.cppreference.com/w/cpp/algorithm/reverse
  • http://en.cppreference.com/w/cpp/algorithm/copy
  • http://en.cppreference.com/w/cpp/iterator/ostream_iterator
  • http://en.cppreference.com/w/cpp/container/vector/rbegin
  • 我收到这些错误,是否必须包含任何特定指令? a3p2.cc: 在函数 a€?void print_vector(std::vector<std::basic_string<char> >)a€?: a3p2.cc:73:6: error: a€?ostream_iteratora€?不是 a€?stda€ 的成员? a3p2.cc:73:39: 错误:a€?>a€? 之前的预期主表达式?令牌
  • @Hoomanium:对于答案中提到的功能,您必须包括 、<string> 和 <iterator>。
  • 我有但没有<iterator>。现在添加它…
  • 这是我当前的代码: void print_vector(vector<string> v){ int vec_size = v.size(); for (int i=0; i < vec_size; i ){ cout << v.at(i) << ” “;它应该按照它们出现的顺序打印向量中的元素。而我正在寻找一种代码,以与上述代码相反的顺序打印元素。我尝试了您的解决方案,但输出顺序与我的代码没有什么不同。这不是反向的。你能告诉我哪里错了吗?
  • @Hoomanium – 不,如果没有完整的示例程序,我无法告诉你你错在哪里(参见 sscce.org 以获得解释)。但是为了您的利益,我已经编辑了我的答案。


来源:https://www.codenong.com/11019722/

微信公众号
手机浏览(小程序)

Warning: get_headers(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:ssl3_get_server_certificate:certificate verify failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(): Failed to enable crypto in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57

Warning: get_headers(https://static.shanhubei.com/qrcode/qrcode_viewid_8948.jpg): failed to open stream: operation failed in /mydata/web/wwwshanhubei/web/wp-content/themes/shanhuke/single.php on line 57
0
分享到:
没有账号? 忘记密码?