如何扭转在C ++字符串的载体? [重复](How to reverse a vector of

2019-09-18 01:58发布

可能重复:
如何扭转一个C ++载体?

我有一个字符串矢量,我想扭转载体和打印,或简单地说,以倒序打印载体。 我应该如何去这样做呢?

Answer 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"));

最后,如果你喜欢写自己的循环,而不是使用的<algorithm>

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) << " ";
  }
} 

参考文献:

  • 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


文章来源: How to reverse a vector of strings in C++? [duplicate]