私は C++ が初めてで、この宣言の意味を知りたいと思っていました。
typedef pair<double,double> pairD;
pair<pairD, long> unknown;
未知ってなんだろう?
より具体的には、これらのオペレーターは次のことを行います。
unknown.FF.FF;
unknown.FF.SS;
このような未知のデータ構造に初期化または入力できるデータの例を挙げていただけますか?
ありがとう!
私は C++ が初めてで、この宣言の意味を知りたいと思っていました。
typedef pair<double,double> pairD;
pair<pairD, long> unknown;
未知ってなんだろう?
より具体的には、これらのオペレーターは次のことを行います。
unknown.FF.FF;
unknown.FF.SS;
このような未知のデータ構造に初期化または入力できるデータの例を挙げていただけますか?
ありがとう!
unknown
ですpair<pair<double, double>, long>
。
ただし、確実に何FF
を意味するのかを推測することは不可能です。SS
明らかな解釈はFirstFirst
and SecondSecond
-- に関するものですが、それらは使用されている方法には適合しません (また、FirstFirst はある程度理にかなっていますが、SecondSecond は実際にはそうではありません。なぜなら、unknown.second はlong
であり、ペアではないからです)。
それを除外すると、残っているのは and を表すだけfirst
なsecond
ので、unknown.FF.SS
は と同等でunknown.first.second
あり、unknown.FF.FF
と同等unknown.first.first
です。
このようなデータをどのように配置するかについてはunknown
、1 つの可能性は次のようになります。
unknown x = std::make_pair(std::make_pair(1.0, 2.0), 3L);
C++ では、std::pair<F, S>
次の 2 つのメンバーがあります。
F first;
S second;
したがって:
typedef pair<double,double> pairD;
pair<pairD, long> unknown;
に展開しpair<pair<double, double>, long>
ます。与えられた:
unknown = std::make_pair(std::make_pair(1.2, 2.4), 3);
それから:
std::cout << unknown.first.first << std::endl;
std::cout << unknown.first.second << std::endl;
std::cout << unknown.second << std::endl;
プリント:
1.2
2.4
3