📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

263行目: 263行目:
<br><br>
<br><br>


== 要素を反転する ==
== 要素の反転 ==
<code>std::reverse</code>アルゴリズムは、STLアルゴリズムの一部であり、任意の範囲の要素の順序を逆にすることができる。<br>
<code>std::reverse</code>アルゴリズムは、STLアルゴリズムの一部であり、任意の範囲の要素の順序を逆にすることができる。<br>
最初と最後のペアから始まる2つの要素を内部的に交換する。また、指定された範囲のイテレータを表す2つの引数を取る。<br>
最初と最後のペアから始まる2つの要素を内部的に交換する。また、指定された範囲のイテレータを表す2つの引数を取る。<br>
276行目: 276行目:
  int main()
  int main()
  {
  {
     std::vector<char> arr = {"h", "o", "g", "e"};
     std::vector<char> arr = {'h', 'o', 'g', 'e'};
   
   
     //size_t width = 4;
     //size_t width = 4;
282行目: 282行目:
   
   
     std::cout << std::left << std::setw(10) << "arr: ";
     std::cout << std::left << std::setw(10) << "arr: ";
     copy(arr.begin(), arr.end(), std::ostream_iterator<int>(cout,"; "));
     copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout,"; "));
     std::cout << std::endl;
     std::cout << std::endl;
   
   
298行目: 298行目:
  arr:      h; o; g; e;
  arr:      h; o; g; e;
  arr:      e; g; o; h;
  arr:      e; g; o; h;
<br><br>
== 要素の回転 ==
<code>std::rotate</code>は、要素を左にシフトして、ベクトル境界の外側に移動された要素をラップする。<br>
<code>std::rotate</code>は<code>ForwardIt</code>イテレータの3つの引数を取り、第2引数が指す要素が、新しく生成されたリストの最初の位置に移動するように回転する。<br>
<syntaxhighlight lang="c++">
#include <iostream>
#include <iterator>
#include <iomanip>
#include <vector>
int main()
{
    std::vector<int> arr = {1, 2, 3, 4, 5, 6};
    std::cout << std::left << std::setw(10) << "arr: ";
    copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, "; "));
    std::cout << std::endl;
    std::rotate(arr.begin(), arr.begin() + (arr.size() / 2), arr.begin() + arr.size());
    std::cout << std::left << std::setw(10) << "arr: ";
    copy(arr.begin(), arr.end(), std::ostream_iterator<int>(std::cout, "; "));
    std::cout << std::endl;
    return EXIT_SUCCESS;
}
</syntaxhighlight>
<br>
// 出力例
arr:      1; 2; 3; 4; 5; 6;
arr:      4; 5; 6; 1; 2; 3;
<br><br>
<br><br>