5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

勉強@C++

Last updated at Posted at 2014-05-24

C++のライブラリが凄い様なので、色々調べてまとめてみようと思いました。
競技プログラミングに強い言語でもあるので、学んでおいて損は無いと思います!
コード1:next_permutation

next_permutation
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;

int main(void) {
    int n;
    
    while((scanf("%d", &n)) != EOF) {
        int myints[n];
        memset(myints, 0, sizeof(myints));
        for(int r = 0; r < n; r++) {
            cin >> myints[r];
        }
        sort(myints, myints + n);
        
        do {
            for(int r = 0; r < n; r++) {
                cout << myints[r] << ((r != n - 1) ? ' ' : '\n');
            }
        }while(next_permutation(myints, myints + n));
    }
    
    return(0);
}

コード2:cinとcoutのフラッシュ関係を省く為のコード

cin_and_coutFrash
#include <iostream>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    int x;
    cin >> x;
    cout << x * x * x << "\n";
}

コード3:vectorの基本操作

vector
#include <iostream>
#include <vector>
using namespace std;

int main(void) {
    vector<int> vc;
    int n;
    cin >> n;
    
    while(n--) {
        int x;
        cin >> x;
        vc.push_back(x);
    }
    
    n = (int)vc.size() / 2;
    if(vc[n] == vc.at(n))
        cout << n << "\n";
    
    return(0);
}

コード4:vectorの基本操作2

vector2
#include <vector>
#include <iostream>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    for(int N; cin >> N && N;) {
        vector<int> inputs;
        for(int r = 0; r < N; r++) {
            int value;
            cin >> value;
            inputs.push_back(value);
        }
        sort(inputs.begin(), inputs.end());
        for(int r = 0; r < inputs.size(); r++) {
            if(r) {
                cout << " ";
            }
            cout << inputs[r];
        }
        cout << endl;
    }
}

コード5:mapの基本操作

map
#include <map>
#include <iostream>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    map<char, int > mp;
    mp['a'] = 1;
    mp['b'] = 2;
    
    cout << mp['a'] << ' ' << mp['b'] << '\n';
    if(mp.find('c') != mp.end())
        cout << mp['c'] << '\n';
    
    return(0);
}

コード6:stringの基本

string
#include <iostream>
#include <string>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    string str;
    str = "this is a string";
    str[2] = 'a';
    str[3] = 't';
    if(str.length() >= 5)
        cout << str << '\n';
    if(str.find("is") != string::npos)
        cout << str.find("is") << '\n';
    
    return(0);
}

コード7:pairの使い方

pair
#include <utility>
#include <vector>
#include <iostream>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    vector< pair<int, int> > vc;
    int n;
    cin >> n;
    while(n--) {
        int x, y;
        cin >> x >> y;
        vc.push_back( pair<int, int>(x, y));
    }
    pair<int, int> p = vc.front();
    cout << p.first << ' ' << p.second << '\n';
    
    return(0);
}

コード8:iteratorの基本操作

iterator
#include <iostream>
#include <vector>
using namespace std;
int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    int n;
    cin >> n;
    vector<int> vc;
    while(n--) {
        int x;
        cin >> x;
        vc.push_back(x);
    }
    //vector<T>のイテレータはvector<T>::iterator型
    vector<int>::iterator it = vc.begin();
    vector<int>::iterator endIt = vc.end();
    
    while(it != endIt) {
        cout << *it << '\n';
        it++;
    }
}

コード9:swapがあるんだよ

swap
#include <algorithm>
using namespace std;

int main(void) {
    int a = 1;
    int b = 5;
    
    swap(a, b);
    
    return(0);
}

コード10:sortだってあるんです!

sort
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    int n;
    cin >> n;
    
    vector<int> vc;
    while(n--) {
        int x;
        cin >> x;
        vc.push_back(x);
    }
    
    sort(vc.begin(), vc.end());
    
    for(int r = 0; r < vc.size(); r++) {
        cout << vc[r] << endl;
    }
}

コード11:sortは降順にも出来るよ!

sort_downer
#include <algorithm>
#include <functional>
using namespace std;

int main(void) {
    int array[] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
    sort(array, array + 9, greater<int>());
    
    
    
    return(0);
}

コード12:どちらが大きい?どちらが小さい?にif文不要!

max_or_min
#include <algorithm>
#include <iostream>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    
    int a = max(1, 5);
    int b = min(1, 5);
    
    cout << a << " " << b << endl;
    
    return(0);
}

コード13:binary_search(二分探索)も出来る

binary_search
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(void) {
    cin.tie();
    ios::sync_with_stdio(false);
    int n;
    cin >> n;
    
    vector<int> vc;
    while(n--) {
        int x;
        cin >> x;
        vc.push_back(x);
    }
    sort(vc.begin(), vc.end());
    
    int x;
    cin >> x;
    if(binary_search(vc.begin(), vc.end(), x))
       cout << "I found" << x << '\n';
    vector<int>::iterator lit = lower_bound(vc.begin(), vc.end(), x);
    vector<int>::iterator uit = upper_bound(vc.begin(), vc.end(), x);
    if(lit != vc.end() && lit != uit)
        cout << uit - lit << '\n';
    
    return(0);
}

いやー、Qiitaのコードはりつけの仕方ここで初めて知りました・・・
すごい見やすくてびっくり!
今回は、C++の便利なやつ(コンテナやユーティリティ関数etc...)を紹介していきました!

5
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?