同じサイズの 2 つのベクトルがあるとvector< pair<float, NodeDataID> > v1, v2;
します。v1 と v2 の両方から、同じ NodeDataID を持つ要素の数を計算したいとします。たとえばv1 = {<3.7, 22>, <2.22, 64>, <1.9, 29>, <0.8, 7>}
、 との場合、同じ NodeDataID を共有する v1 と v2 の 2 つの要素 (7 と 64) があるため、2v2 = {<1.66, 7>, <0.03, 9>, <5.65, 64>, <4.9, 11>}
を返します。
C++ でそれを行う最も簡単な方法は何ですか?
参考までに、ブーストを次のように使用するため、型NodeDataIDs
が定義されていることに注意してください。
typedef adjacency_list<setS, setS, undirectedS, NodeData, EdgeData> myGraph;
typedef myGraph::vertex_descriptor NodeDataID;
しかし、演算子 == を使用して 2 つの NodeDataID を比較できるため (つまり、実行可能)、重要ではありませんv1[i].second == v2[j].second
。