STL 覚書
STLをメインにC++全般の覚書
入出力
とりあえず、文字列長を気にしたくない場合 <algorithm>で定義されているgetlineを使う。
入出力
一行読み込み
iostreamだけの場合、バッファ長を指定する必要がある#include <iostream> int main() { char buff[256]; while (std::cin.getline(buff, sizeof(buff))) std::cout << buff << std::endl; return 0; }指定されたサイズを超えた入力があると、失敗する。
とりあえず、文字列長を気にしたくない場合 <algorithm>で定義されているgetlineを使う。
#include <string> #include <iostream> #include <algorithm> int main() { std::string s; while (std::getline(std::cin, s)) std::cout << s << std::endl; return 0; }
iterator
ostream_iterator
とりあえず、サンプル。#include <cstdlib> #include <iostream> #include <vector> #include <algorithm> #include <iterator> int main() { std::vector<int> v(10); // 乱数列を生成 std::generate(v.begin(), v.end(), std::rand); // intを出力、その都度 ", " も出力 std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, ", ")); // 要するに代入が出力になる *std::ostream_iterator<int>(std::cout, " End.") = -1; return 0; }出力
41, 18467, 6334, 26500, 19169, 15724, 11478, 29358, 26962, 24464, -1 End.第二引数の ", " は、要素間ではなく、要素の後に毎回(最後尾も)出力される。