STL 里面 find 功能可否指定成功 find n次之后停止, 并将最后一次find的位置返回.

gddsky 2003-05-08 03:21:58
谢谢, STL不熟悉只能来这里散分了.
SORRY.
...全文
47 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gddsky 2003-05-08
  • 打赏
  • 举报
回复
#include <string>
#include <iostream>

bool find_num( char c )
{
static int sum = 0;
if( c == '\n' )
{
if( ++sum > 4 )
{
sum = 0;
return true;
}
}
return false;
}

void main( void )
{
string test1 = "1 line.\n2 line.\n3 line.\n4 line.\n5 line.\n6 line.\n";
string::iterator result = find_if( test1.begin(), test1.end(), find_num );
result++;
cout << "find ok (num = 4), followed char is: " << *result << endl;
}

// 大至情况是如此, 虽然有点不如意的地方( ok num 可调的实现须要另外自己写方法来实现 )
wingfiring 2003-05-08
  • 打赏
  • 举报
回复
怎么会降低效率呢?不会有明显影响的。
也可以用find_if来代替。
HF 2003-05-08
  • 打赏
  • 举报
回复
重写find如何?
gddsky 2003-05-08
  • 打赏
  • 举报
回复
如此做效率就会低了, 像这种find的函数, 对效率的要求都是比较高的...
尽可能的情况当然是去使用现有的功能了...
liu_feng_fly 2003-05-08
  • 打赏
  • 举报
回复
好象不可以。
不过,你可以多次调用find函数来达到这个效果

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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