私はCatchユニットテストフレームワークを使用しています。私はダブルスのベクトルを比較したいと思います。このother answerは、Approxを使用して浮動小数点/倍精度値を比較することを提案していますが、これはそのベクトルでは機能しません。これを達成するための便利な方法はありますか?キャッチを使用したダブルスのベクトル比較
EDIT:次のコードで例
:
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
TEST_CASE("Compare Vectors", "[vector]") {
std::vector<int> vec1 = {0, 1, 2, 3};
std::vector<int> vec2 = {0, 1, 2, 4};
REQUIRE(vec1 == vec2);
}
テストは、次のレポートで失敗します。
-------------------------------------------------------------------------------
Compare Vectors
-------------------------------------------------------------------------------
test/UnitTests/test_Example/example.cc:4
...............................................................................
test/UnitTests/test_Example/example.cc:7: FAILED:
REQUIRE(vec1 == vec2)
with expansion:
{ 0, 1, 2, 3 } == { 0, 1, 2, 4 }
===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
しかし、次のように、私は、コードを変更した場合、私はしたいと思いますテストは合格するが、明らかにそれは合格しない。
#define CATCH_CONFIG_MAIN
#include "catch.hpp"
TEST_CASE("Compare Vectors", "[vector]") {
std::vector<double> vec1 = {0, 1, 2, 3};
std::vector<double> vec2 = {0, 1, 2, 3.000001};
REQUIRE(vec1 == vec2);
}
私ができる要素をループし、それらを一つずつ比較が、不一致の場合には、エラーの原因を決定することはより困難であろう。
ベクトルをループして要素ごとに比較するとどうなりますか? [この質問](http://stackoverflow.com/q/41160846/3093378)も参照してください。 – vsoftco
@vso私は問題は、どのようにベクトルをループするのではなく、その間に浮動小数点数を比較する方法ではないと思います。 –