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.第二引数の ", " は、要素間ではなく、要素の後に毎回(最後尾も)出力される。
