对于家庭作业,我要实现一个方格列表(已经完成)并传递所提供的所有单元测试。我已经通过了除了一个之外的所有特定单元测试,用于实现“比较构造函数”。
以下是涉及的增强单元测试:
#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() ) );
}
什么是基于上述的“比较构造函数”?我无法理解。
答案 0 :(得分:0)
从您提供的上下文中我认为&#34;比较构造函数&#34;指的是将比较对象作为参数的构造函数。
虽然像&#34;默认构造函数&#34;或者&#34;复制构造函数&#34;是特定于语言的,&#34;比较构造函数&#34;不是。这是家庭作业的具体内容。