web-dev-qa-db-ja.com

C ++ベクトルを反転するにはどうすればよいですか?

所定の位置にベクターを反転させるためのC++の組み込みベクター関数はありますか?

または、手動で行う必要がありますか?

123
SirYakalot

この目的のために、algorithmヘッダーに関数std::reverseがあります。

#include <vector>
#include <algorithm>

int main() {
  std::vector<int> a;
  std::reverse(a.begin(), a.end());
  return 0;
}
222

すべてのコンテナは、rbegin()およびrend()を含むコンテンツの逆viewビューを提供します。これらの2つの関数はso-callesreverse iteratorsを返します。これは通常のイテレータと同じように使用できますが、実際にはコンテナが反転しているように見えます。

#include <vector>
#include <iostream>

template<class InIt>
void print_range(InIt first, InIt last, char const* delim = "\n"){
  --last;
  for(; first != last; ++first){
    std::cout << *first << delim;
  }
  std::cout << *first;
}

int main(){
  int a[] = { 1, 2, 3, 4, 5 };
  std::vector<int> v(a, a+5);
  print_range(v.begin(), v.end(), "->");
  std::cout << "\n=============\n";
  print_range(v.rbegin(), v.rend(), "<-");
}

イデオンのライブ例 。出力:

1->2->3->4->5
=============
5<-4<-3<-2<-1
38
Xeo

このようにstd::reverseを使用できます

std::reverse(str.begin(), str.end());
19
Chuck Norris

std::listの代わりにstd::vectorを使用することもできます。 listには、要素を反転するための組み込み関数 list :: reverse があります。

2
Hello W