プログラミングコンテストに参加して他の人のコードを見る機会が増えてから、短くコードを書くノウハウが少しずつ身についてきた。
ループを回しながら最大値を更新
普通に書くと以下のようなコードになる。
int high = 0; for (int i = 0; i < n; ++i){ int tmp; // 処理 if (tmp > high){ high = tmp; } }
std::max()を使うと少し簡潔に書ける。
#include <algorithm> using namespace std; int high = 0; for (int i = 0; i < n; ++i){ int tmp; // 処理 high = max(high, tmp); }
vectorの要素から最大値を探す
std::max_element()を使うと、最大の要素の場所を指すイテレータが返る。値だけ欲しい場合は、*を使う。
#include <iostream> #include <vector> #include <algorithm> using namespace std; int main(void){ vector<int> vec; vec.push_back(5); vec.push_back(8); vec.push_back(7); int max = *max_element(vec.begin(), vec.end()); cout << max << endl; // 8が表示される return 0; }
2つの変数の値を入れ替える
std::swap()が使える。
#include <iostream> using namespace std; int main(void){ int a = 100; int b = 200; swap(a, b); cout << a << endl; // 200が表示される cout << b << endl; // 100が表示される return 0; }