gpt4 book ai didi

c++ - 如何结合 boost::range 与 BOOST__EQUAL_COLLECTION?

转载 作者:太空宇宙 更新时间:2023-11-04 11:24:16 25 4
gpt4 key购买 nike

是否可以合并 BOOST__EQUAL_COLLECTIONboost::range这样我就可以简化:

#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());

类似于

BOOST_CHECK_EQUAL_COLLECTIONS(mysort({ 11, 7, 5, 3, 2 }), { 2, 3, 5, 7, 11 });

除了不那么冗长之外,我还看到了更有用的警告的额外好处,目前是这样的:

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

这真的没那么有用。

最佳答案

恐怕 boost::range 在这里帮不了你。问题在于 BOOST_CHECK_EQUAL_COLLECTIONS 的定义方式。

你可以自己定义一个宏:

#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 });

关于c++ - 如何结合 boost::range 与 BOOST_<level>_EQUAL_COLLECTION?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27238686/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com