25

私は C++ を学習しようとしていますが、現在、整数のペアのリストを出力する必要があるプログラムを作成しています。

これを処理する最善の方法は何ですか? 学校の Linux コンピューターでブースト ライブラリを利用できないため、boost::tuple を使用できるとは思えません。

助言がありますか?

4

3 に答える 3

31

見てstd::pair<object, object>

編集:

これは標準 C++ であり、STL (標準テンプレート ライブラリ) として知られているものの一部です。これは、汎用的な優れたデータ構造のコレクションです (つまり、任意の C++ オブジェクト タイプを格納するために使用できます)。この特定の構造は、「タプル」または数値のペアを一緒に格納するために使用されます。これは基本的に、格納する最初と 2 番目のオブジェクト (任意のタイプの!) を参照するメンバー "first" と "second" を持つオブジェクトです。

したがって、 の配列を宣言するpair<int, int>か、さらに良いことに、「ベクター」と呼ばれる別の STL 型を使用して、 : の動的サイズのリストを作成しpair<int, int>ますvector<pair<int, int> > myList

ねえ、あなたは何を知っていますか!動的にサイズ変更されるペアのリストが既に存在し、マップと呼ばれます! それを使用することは、 !!!#include <map>を宣言するのと同じくらい簡単です。map<int, int> myMap

編集:

はい、指摘したように、マップはあるオブジェクトを別のオブジェクトにうまく「マップ」するため、左側の値を繰り返すことはできません。それで問題なければ、マップが探しているものです。それ以外の場合は、ペアのベクトルに固執するか、マルチマップを見てください。

std::mapstd::multimap

于 2010-01-29T20:32:59.183 に答える
19

std::pair を使用しますか?

#include <utility>
#include <iostream>

int main() {
    std::pair <int, int> p = std::make_pair( 1, 2 );
    std::cout << p.first << " " << p.second << std::endl;
}

ペアのベクトルを作成できます。

typedef std::pair <int, int> IntPair;

...

std::vector <IntPair> pairs;
pairs.push_back( std::make_pair( 1, 2 ) );
pairs.push_back( std::make_pair( 3, 4 ) );
于 2010-01-29T20:35:49.270 に答える
9

std :: pairは使用するのに最適なアプローチですが、pre-stlソリューションについて誰も言及していないことに驚いています。

struct Pair {
    int first;
    int second;
};

そのような些細な問題のために後押しが必要だと人々が考えるのは心配です。

于 2010-01-31T13:30:24.307 に答える