C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C++での出力イテレータ


ここでは、C++の出力イテレータとは何かを確認します。出力イテレータにはいくつかのプロパティがあります。これらは以下のようなものです:

  • 出力イテレータは、コンテナの値を変更するために使用されます。
  • この種のイテレータを使用してコンテナからデータを読み取ることはできません
  • これは一方向で書き込み専用のイテレータです
  • インクリメントすることはできますが、デクリメントすることはできません。
  • 出力イテレータには2つのサブパートがあります。これらは、InsertIteratorとostreamiteratorです。

インサートイテレータ

挿入イテレータは、コンテナ内に要素を挿入するために使用されます。このタイプのイテレータのassignmentoperatorは、現在の位置に新しい要素を挿入します。 insertiteratorの構文は次のようになります:

template<class Container, class Iterator>
insert_iterator<container> inserter(Container &x,Iterator it);

このイテレータは、xとitの2つのパラメータを取ります。 xは、イテレータが機能するコンテナです。 2番目の引数は、変更する位置を指しているイテレータオブジェクトです。

サンプルコード

#include <iostream>
#include <iterator>
#include <vector>
#include <algorithm>
using namespace std;
int main () {
   vector<int> vec1,vec2;
   for (int i=1; i<=10; i++) { //insert elements into vectors
      vec1.push_back(i);
      vec2.push_back(i+3);
   }
   vector<int>::iterator it = vec1.begin(); //iterator works on vector1
   advance (it,5); //advance it to 5 position
   copy (vec2.begin(),vec2.end(),inserter(vec1,it));
   cout<<"Elements of vec1 are :";
   for ( it = vec1.begin(); it!= vec1.end(); ++it )
      cout << ' ' << *it;
      cout << endl;
   return 0;
}

出力

Elements of vec1 are : 1 2 3 4 5 4 5 6 7 8 9 10 11 12 13 6 7 8 9 10

ostreamイテレータ

ostreamイテレータは、coutのように出力ストリームに書き込むために使用されます。 ostreamiteratorは、basic_ostreamオブジェクトを使用して作成できます。このタイプのイテレータで代入演算子を使用すると、出力ストリームに新しい要素が挿入されます。構文は次のようになります。

template<class T, class charT=char, class traits=char_traits<charT>>
class ostream_iterator;

ostreamイテレータクラスのメンバー関数は次のようになります。

ostream_iterator<T, charT, traits>& operator=(const T& value);
ostream_iterator<T, charT, traits>& operator*();
ostream_iterator<T, charT, traits>& operator++();
ostream_iterator<T, charT, traits>& operator++(int);

パラメータは次のとおりです。T。これは、挿入される要素のタイプ、チャート、ostreamが処理できる要素のタイプ、および特性です。これらは、ストリームで処理できる文字特性です。

サンプルコード

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   vector<int> vector;
   for(int i=1;i<=10;i++)
      vector.push_back(i*i); //make square and insert
      ostream_iterator<int> out(cout,",");
      copy(vector.begin(),vector.end(),out);
}

出力

1,4,9,16,25,36,49,64,81,100,

別の例、

サンプルコード

#include <iostream>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
main() {
   ostream_iterator<int> os_out(cout,",");
   *os_out = 10;
   os_out++; //point to next
   *os_out = 20;
   os_out++;
   *os_out = 30;
}

出力

10,20,30,

  1. C++ストリームクラスの構造

    C ++では、ストリームとは、プログラムスレッドとi/oの間で転送される文字のストリームを指します。 ストリームクラス C ++では、ファイルおよびioデバイスの入出力操作に使用されます。これらのクラスには特定の機能があり、プログラムの入出力を処理します。 iostream.h ライブラリは、C++プログラミング言語のすべてのストリームクラスを保持します。 階層を見て、それらについて学びましょう。 それでは、 iostreamのクラスについて学びましょう。 ライブラリ。 iosクラス −このクラスは、すべてのストリームクラスの基本クラスです。ストリームは、入力ストリームまた

  2. C++での立ち下がり行列の実装

    さまざまな映画などでマトリックスの落下シーンを見てきました。ここでは、そのようにするためのC++プログラムの作成方法を説明します。 この問題を解決するには、これらの手順に注意する必要があります。 マトリックスの幅を定義する 2つの連続する文字の間に、同じ量のギャップがある場合とない場合があります 落下効果を視覚化するために、各行を印刷する間に一定の遅延があります。 例 #include<iostream> #include<string> #include<thread> #include<cstdlib> #include<cti