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


このエントリーをはてなブックマークに追加

プログラミングコンテストに参加して他の人のコードを見る機会が増えてから、短くコードを書くノウハウが少しずつ身についてきた。

ループを回しながら最大値を更新

普通に書くと以下のようなコードになる。

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;
}