C++学習ノート3---標準ライブラリタイプ
通常、ヘッダファイルには確かに必要なものだけを定義し、この良い習慣を身につけなければならない.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番目)で、各要素の合計を計算し、出力します.
隣接するボールと:
最初と最後の合計:
vectorの長さを変更する操作は、既存の反復器を無効にします.たとえば、push_を呼び出すback以降、vectorを指す反復器の値を信頼することはできません.vector
隣接するボールと:
#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;
}