gpt4 book ai didi

c++ - 方形列表 "Compare Constructor"实现

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

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

以下是涉及的 boost 单元测试:

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

什么是基于上述的“比较构造函数”?我想不通。

最佳答案

根据您给出的上下文,我认为“比较构造函数”是指将比较对象作为参数的构造函数。

虽然像“默认构造函数”或“复制构造函数”这样的术语是特定于语言的,但“比较构造函数”不是。它特定于此家庭作业。

关于c++ - 方形列表 "Compare Constructor"实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30656913/

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