请高手们确认该题是否有问题,如果没问题,请帮我实现好吗?

LoveyuerForever 2004-01-05 09:02:36
题目如下:
利用这个函数:(原型如下)
template<typename T>
list<T>::iterator seqSearch( list<T>::iterator first, list<T>::iterator last, const T& target)
实现下面函数:
template<typename T>
int count( const list<T>& aList, const T& item) 统计表aList中item出现的次数. 算法也比较简单:就是重复使用seqSearch()函数从表aList中查找item,直到
seqSearch()返回 aList.end().
可以无法通过编译!老出现 const_iterator到 iterator的转换问题!
...全文
78 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xueweizhong 2004-01-05
  • 打赏
  • 举报
回复
呵呵,把最后的结果再贴一下:

#include <list>
using std::list;
//利用这个函数:(原型如下)
template<typename T>
typename list<T>::iterator seqSearch(
typename list<T>::iterator first,
typename list<T>::iterator last,
const T& target
);
// 实现下面函数:
template<typename T>
int count( const list<T>& aList, const T& item);

/*
统计表aList中item出现的次数.
算法也比较简单:
就是重复使用seqSearch()函数从表aList中查找item,
直到seqSearch()返回 aList.end().可以无法通过编译!
老出现 const_iterator到 iterator的转换问题!
*/

template<typename T>
int count( const list<T>& aList, const T& item)
{
list<T>& caList = const_cast<list<T>&>(aList);

int result = 0;
typename list<T>::iterator iter = caList.begin();
while (
(iter = seqSearch(iter, caList.end(), item))
!= aList.end()
)
{
++result;
++iter;
}
return result;
}

int main()
{
list<int> l;
count(l, 10);
}

前面的程序因为函数模板没有实例化,导致
编译器查错有限。
xueweizhong 2004-01-05
  • 打赏
  • 举报
回复
》 typename list<T>::const_iterator iter;
》 while (
》 (iter = seqSearch(caList.begin(), caList.end()))
》 != aList.end()
》 )

这几行执行语义上有些问题,应该是:

typename list<T>::const_iterator iter = caList.begin();
while (
(iter = seqSearch(iter, caList.end(), item))
!= aList.end()
)
{
++count;
++iter;
}
xueweizhong 2004-01-05
  • 打赏
  • 举报
回复
我帮你改了一下,下面的程序在
VC7.1 g++3.3.1 cbuilder6
编译器上编译通过:

#include <list>
using std::list;
//利用这个函数:(原型如下)
template<typename T>
typename list<T>::iterator seqSearch(
typename list<T>::iterator first,
typename list<T>::iterator last,
const T& target
);
// 实现下面函数:
template<typename T>
int count( const list<T>& aList, const T& item);

/*
统计表aList中item出现的次数.
算法也比较简单:
就是重复使用seqSearch()函数从表aList中查找item,
直到seqSearch()返回 aList.end().可以无法通过编译!
老出现 const_iterator到 iterator的转换问题!
*/

template<typename T>
int count( const list<T>& aList, const T& item)
{
list<T> const& caList = const_cast<list<T> const&>(aList);

int result = 0;
typename list<T>::const_iterator iter;
while (
(iter = seqSearch(caList.begin(), caList.end()))
!= aList.end()
)
{
++count;
}
return count;
}
RedSunRS 2004-01-05
  • 打赏
  • 举报
回复
Show me your source code, please.
sharkhuang 2004-01-05
  • 打赏
  • 举报
回复
:)
jawibn 2004-01-05
  • 打赏
  • 举报
回复
list<T>::iterator first中间的空格好不好呀,解释一下行吗:-)
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧