所定の位置にベクターを反転させるためのC++の組み込みベクター関数はありますか?
または、手動で行う必要がありますか?
この目的のために、algorithm
ヘッダーに関数std::reverse
があります。
#include <vector>
#include <algorithm>
int main() {
std::vector<int> a;
std::reverse(a.begin(), a.end());
return 0;
}
すべてのコンテナは、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
このようにstd::reverse
を使用できます
std::reverse(str.begin(), str.end());
std::list
の代わりにstd::vector
を使用することもできます。 list
には、要素を反転するための組み込み関数 list :: reverse があります。