C++学習ノート3---標準ライブラリタイプ

3315 ワード

通常、ヘッダファイルには確かに必要なものだけを定義し、この良い習慣を身につけなければならない.stringタイプの入力オペレータによる空白文字の処理:有効文字(空白文字以外)の前のすべての空白文字を読み取り、無視し、再び空白文字に遭遇するまで読み取りを終了します(この空白文字は入力ストリームに残ります).getline関数の空白文字の処理:行の先頭の空白文字を無視せず、改行に遭遇するまで文字を読み出し、改行を終了して破棄する(改行は入力ストリームから削除されるがstringオブジェクトには格納されない).オーバーフローを回避するには、stringオブジェクトsizeを保存する最も安全な方法は、標準ライブラリタイプstring::size_を使用することです.typeはC標準ライブラリヘッダファイルのC++バージョンを採用する必要があります.include #include                      string str1; string str2("hello world!"); for(string::size_type val=0;val < str2.size();val++)     str1[val] =  str2[val] ;//これはエラーです.str 1はデフォルトで空の文字列に初期化され、下付きvalは使用できません.str 1+=str 2[val];vectorも、下付きオペレータでインデックスを作成するには、既存の要素でなければなりません.下付き操作で値を割り当てると、要素は追加されません.
vectorの長さを変更する操作は、既存の反復器を無効にします.たとえば、push_を呼び出すback以降、vectorを指す反復器の値を信頼することはできません.vector::iterator mid = (vi.begin() + vi.end())/2; 2つの反復器を加算する操作は定義されていないため、この方法でmidを計算するとコンパイルエラーが発生します.整数のセットをvectorオブジェクトに読み込み、隣接する各要素の和を計算して出力します.読み込まれた要素の数が奇数の場合、最後の要素が合計されず、その値が出力されることを示すプロンプトが表示されます.次に、プログラムを変更します.ヘッダーと末尾の要素の2つのペア(最初と最後、2番目と最後から2番目)で、各要素の合計を計算し、出力します.
隣接するボールと:
#include<vector>
#include<iostream>
using namespace std;
int main()
{
    vector<int> ivec;
    int ival;
    //       vector   
    cout << "Enter numbers(Ctrl+D to end):" << endl;
    while (cin>>ival)
        ivec.push_back(ival);
    //            
    if (ivec.size() == 0) {
        cout << "No element?!" << endl;
        return -1;
    }
    cout << "Sum of each pair of adjacent elements in the vector:"
         << endl;
    for (vector<int>::size_type ix = 0; ix < ivec.size()-1;
                              ix = ix + 2)
    {
        cout << ivec[ix] + ivec[ix+1] << "\t";
        if ( (ix+1) % 6 == 0) //      6   
            cout << endl;
    }


  if (ivec.size() % 2 != 0) //             
      cout << endl
            << "The last element is not been summed "
            << "and its value is "
            << ivec[ivec.size()-1] << endl;
  return 0;
}

最初と最後の合計:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
    vector<int> ivec;
    int ival;
    //      vector   
    cout << "Enter numbers:" << endl;
    while (cin>>ival)
        ivec.push_back(ival);
    //             
    if (ivec.size() == 0) {
        cout << "No element?!" << endl;
        return -1;
                                      
  cout << "Sum of each pair of counterpart elements in the vector:"
       << endl;
  vector<int>::size_type cnt = 0;
  for (vector<int>::size_type first = 0, last = ivec.size() - 1;
       first < last; ++first, --last) {
      cout << ivec[first] + ivec[last] << "\t";
      ++cnt;
      if ( cnt % 6 == 0) //     6   
          cout << endl;
  }
  if (first == last) //          
      cout << endl
            << "The center element is not been summed "
            << "and its value is "
            << ivec[first] << endl;
  return 0;
}