Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何将boost::range与boost结合起来&ult;级别>_相等的集合?_C++_Boost - Fatal编程技术网

C++ 如何将boost::range与boost结合起来&ult;级别>_相等的集合?

C++ 如何将boost::range与boost结合起来&ult;级别>_相等的集合?,c++,boost,C++,Boost,是否有可能与以下内容结合,以便我可以简化: #include <boost/test/unit_test.hpp> std::vector<int> mysort(std::vector<int>); ... auto lhs = mysort({ 11, 7, 5, 3, 2 }); const std::vector<int> rhs = { 2, 3, 5, 7, 11 }; BOOST_CHECK_EQUAL_COLLECTIONS(

是否有可能与以下内容结合,以便我可以简化:

#include <boost/test/unit_test.hpp>

std::vector<int> mysort(std::vector<int>);
...

auto lhs = mysort({ 11, 7, 5, 3, 2 });
const std::vector<int> rhs = { 2, 3, 5, 7, 11 };

BOOST_CHECK_EQUAL_COLLECTIONS(lhs.begin(), lhs.end(), rhs.begin(), rhs.end());
除了不那么冗长之外,我还看到了一个更有用的警告的额外好处,它目前的内容如下:

error in "foo": check { lhs.begin(), lhs.end() } == { rhs.begin(), rhs.end() } failed.

这真的没什么用。

恐怕
boost::range
在这里帮不了你。问题在于如何定义
BOOST\u CHECK\u EQUAL\u集合

您可以自己定义宏:

#define COLLECTIONS_CHECK_EQUAL(a, b) BOOST_CHECK_EQUAL_COLLECTIONS(std::begin(a), std::end(a), std::begin(b), std::end(b))
并将其用作:

COLLECTIONS_CHECK_EQUAL(mysort(std::vector<int>{ 11, 7, 5, 3, 2 }), std::vector<int>{ 2, 3, 5, 7, 11 });
COLLECTIONS\u CHECK\u EQUAL(mysort(std::vector{11,7,5,3,2}),std::vector{2,3,5,7,11});
COLLECTIONS_CHECK_EQUAL(mysort(std::vector<int>{ 11, 7, 5, 3, 2 }), std::vector<int>{ 2, 3, 5, 7, 11 });