方形列表“比较构造函数”实现

时间:2015-06-05 01:27:35

标签: c++ boost constructor

对于家庭作业,我要实现一个方格列表(已经完成)并传递所提供的所有单元测试。我已经通过了除了一个之外的所有特定单元测试,用于实现“比较构造函数”。

以下是涉及的增强单元测试:

#include "ut_square_list.hpp"
#include <boost\test\auto_unit_test.hpp>
#include <vector>
using std::vector;

template <class T>
class RuntimeCmp
{
public:
    enum cmp_mode { normal, reverse };
private:
    cmp_mode mode;
public:
    RuntimeCmp( cmp_mode m = normal ) : mode(m) { } // constructor
    bool operator()(T const& t1, T const& t2) const { return mode == normal ? t1 < t2 : t2 < t1; } // function call operator - 
    bool operator==( RuntimeCmp const& rc ) { return mode == rc.mode; }
};



/** Test square_list<T>::square_list() */
BOOST_AUTO_TEST_CASE( ut_ctor_compare_def ) {
    square_list<double,RuntimeCmp<double>> s;
    vector<double> data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

    for (auto x : data)
        s.insert(x);

    BOOST_CHECK( std::equal( s.begin(), s.end(), data.begin() ) );
}



BOOST_AUTO_TEST_CASE( ut_ctor_compare_passed ) {
    RuntimeCmp<double> rc(RuntimeCmp<double>::reverse);
    square_list<double,RuntimeCmp<double>> s(rc);
    vector<double> data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };


    for (auto x : data)
        s.insert(x);

    BOOST_CHECK( std::equal( s.begin(), s.end(), data.rbegin() ) );
}



BOOST_AUTO_TEST_CASE( ut_ctor_compare_iterator_passed ) {
    vector<double> data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
    RuntimeCmp<double> rc(RuntimeCmp<double>::reverse);
    square_list<double,RuntimeCmp<double>> s(data.begin(),data.end(),rc);

    BOOST_CHECK( std::equal( s.begin(), s.end(), data.rbegin() ) );
}

什么是基于上述的“比较构造函数”?我无法理解。

1 个答案:

答案 0 :(得分:0)

从您提供的上下文中我认为&#34;比较构造函数&#34;指的是将比较对象作为参数的构造函数。

虽然像&#34;默认构造函数&#34;或者&#34;复制构造函数&#34;是特定于语言的,&#34;比较构造函数&#34;不是。这是家庭作业的具体内容。

相关问题