私は本当にそれを取得しません:
私はポイントを読んでいます。それぞれがバイナリファイルから3つのfloat値を保持しています。このポイントをunordered_mapに保存する
したがって、これら3つのfloat値からキーを作成しようとします。
最初の意図:正確なビットをキーとして使用するだけです:
unordered_map<string, vector<float>> points;
string vecToKey( float* a ) {
char bytes[12];
memcpy(bytes, a, 12);
return string(bytes);
}
ポイントは、私は間違いなくこの方法で同じポイントを排除したいということですが
約21374ポイントを読み取るプロジェクトの例では、マップ結果のサイズ=10640ポイント
キーの作成として次の方法を使用すると、10687ポイントの適切な結果が得られます
string vec3ToKey( float a[3] ) {
float a1[3];
a1[0] = a[0];
a1[1] = a[1];
a1[2] = a[2];
stringstream ss;
boost::archive::text_oarchive oa(ss);
oa << a1;
return ss.str();
}
問題は速度です。2番目の方法は約16秒、最初の方法は1〜2秒必要です...私は自分自身を説明することができません。なぜ違いがあるのか...
私はすべてのアイデアに感謝します:)