2012-05-01から1ヶ月間の記事一覧

コードを短くするちょっとした工夫

C++

プログラミングコンテストに参加して他の人のコードを見る機会が増えてから、短くコードを書くノウハウが少しずつ身についてきた。 ループを回しながら最大値を更新 普通に書くと以下のようなコードになる。 int high = 0; for (int i = 0; i < n; ++i){ int…

小数点以下n桁を表示する

C++

Cだと double num = 100.123456789101112; printf("%.10lf\n", num); で簡単に小数点以下10桁を出力できる。だが、C++だとそうはいかない。 #include <cstdio> #include <iostream> #include <iomanip> using namespace std; int main(void){ double num = 100.123456789101112; printf(</iomanip></iostream></cstdio>…

lower_bound(), upper_bound()

C++

いつか制覇しようと思っていたlower_bound()とupper_bound()。C++編(標準ライブラリ) 第18章 並べ替えのアルゴリズムを読むことで理解できた。以下のように考えると分かりやすい。 lower_bound() と upper_bound() はともに、すでに昇順にソート済のコン…

vector同士の比較

C++

2つのvector同士を==で比較すると、すべての要素が同じときtrue、一つでも異なる要素があるときfalseを返してくれるらしいことに気づいた。 #include <vector> #include <iostream> using namespace std; int main(void){ int _vector[] = {3, 5, 7}; vector<int> vec1(&_vector[0],</int></iostream></vector>…

C++の文字列操作 その3

C++

以下、すべて #include <iostream> using namespace std; と書いてあるものとする。 文字列の置換 replace()を使う。取りうる引数はいろいろあるけど、多分一番使うのは以下の例。 string str = "Today is April 19."; str.replace(9, 5, "May"); // strのindex9から5</iostream>…

シェルスクリプトで掛け算

シェルスクリプトで掛け算をしようとして少しはまった。やりたいことは、数字0, 1, 2, ...が与えられた時、数字0, 5, 10,...を出力すること。これはダメな例。 #!/bin/sh for i in {0..10} do num=`expr 5*$i` echo $num // "5*0", "5*1", "5*2", ...が出力…

C++の文字列操作 その2

C++

昨日の続き。以下、すべて #include <iostream> using namespace std; と書いてあるものとする。 文字列中の文字を一文字ずつ走査 string str = "abcde"; for(int i = 0; i < (int)str.size(); ++i){ char ch = str[i]; } 部分文字列の生成 substr()を使う。第一引数で</iostream>…

C++の文字列操作

C++

以下、すべて #include <sstream> #include <iostream> using namespace std; と書いてあるものとする。 数字から文字列へ変換 int i = 10; ostringstream sout; sout << i; string s = sout.str(); cout << s << endl; 文字列から数字へ変換 string str = "123.456"; istringst</iostream></sstream>…

ブクログで本の読了日を変更する

ブクログで、本を読み終わった日を後から編集する方法がわからず10分くらい迷ってしまった。忘れないようにメモ。1.「本の登録・編集」→「登録した本の編集・削除」をクリック 2. 編集したい本の表紙、または「レビューを書く・詳細」をクリック 3.「読了日…

小数の剰余

C++

整数の剰余には%を使う。しかし小数には使えない。どうすれば良いか。 #include<iostream> int main(void){ int a = 8; int b = 3; std::cout << "a % b = " << a % b << std::endl; long double c = 8.5L; long double d = 3.5L; // std::cout << "c % d = " << c % d </iostream>…