自分のためのTips、誰かの為にもなるといいな・・・

STL 覚書


STLをメインにC++全般の覚書

入出力

一行読み込み

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




最終更新 2007/10/25 18:25:53 - yohei
(2007/09/19 07:55:39 作成)


検索

最近気になる言葉
LINQ
atコマンド
最近更新したページ
2015/7/16
2008/9/15
2008/1/30
2007/12/14
2007/11/14
2007/10/25
2007/9/23
2007/5/30