【C++】vectorでpairを使うメモ
最初に
vectorではpairが用いられることが多いようなので、C++でvectorとpairを使った動作を備忘録として残します。
vector_pair.cpp
#include <iostream> #include <vector> int main() { std::vector<int> vec; vec.push_back(2); vec.push_back(7); vec.push_back(0); vec.push_back(3); vec.push_back(5); vec.push_back(1); vec.push_back(4); vec.push_back(6); vec.push_back(9); vec.push_back(8); typedef std::pair<int, int> pair; std::vector<pair> pair_vec; for ( int i = 0; i < vec.size(); ++i ) pair_vec.push_back( pair( i, vec[i] ) ); for ( auto& i: pair_vec ) std::cout << i.first << " " << i.second << std::endl; return 0; }
実行結果
$ g++ -o vector_pair vector_pair.cpp -std=c++11 $ ./vector_pair 0 2 1 7 2 0 3 3 4 5 5 1 6 4 7 6 8 9 9 8
解説
先に書かせていただくと、using namespace std;を使えば楽にかけますが、勉強のため。
- 5行目:int型のベクトルの型を作成。
- 6から15行目はvecに適当な縦10で横1の行列を作成。
- 17行目では、pair<int, int>で2つ数字をセットにできる型を作成。
- 18行目では、横の要素数が2つのpair_vecの行列の型を作成。
- 23行目は範囲指定のfor文。C++11の機能を使っている。
- 24行目は出力。pairの場合、ひとつ目がfirst, 2つめがsecondという扱い
まとめ
- おそらく、pairを使わない場合はvector<vector
>など面倒くさい書き方になるのを考えると、pairを使うと簡潔なプログラムになる - コンパイルする際にC++11の機能を使うオプションをつけないといけないため、現在の書き方を知る必要はあるかもです。(調べてもでてこないので、コンパイルオプションをつけるのは一般的?
以上です。