当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 4 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : STL标准算法count提示错误?
帖子发表于 : 2007-04-25 11:01 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
程序:
//==============================================================
// count-ex.cpp -- Demonstrates count algorithm
// Time-stamp: <1999-07-19 10:19:36 tswan>
// To compile:
// g++ count-ex.cpp
// To run:
// ./a.out
// Copyright (c) 1999 by Tom Swan. All rights reserved.
//==============================================================

#include <iostream>
#include <algorithm>
#include <numeric> //Need ostream_iterator
#include <vector>
#include <functional>
#include <stdlib.h> // Need random(), srandom()
#include <time.h> // Need time()
using namespace std;
vector<int> a(100);

template<class Arg>
class is_even : public unary_function<Arg, bool>
{
public:
bool operator()(const Arg& arg1) { return (arg1 % 2) == 0; }
};

int main()
{
int sum = 0, value = 0, numEvens = 0;

srandom( time(NULL) ); // Seed random generator
for (int i = 0; i < 100; i++)
a[i] = random() % 1000;

for (int i = 0; i < 100; i++) {
int v = *(a.begin() + i); // Assign search value to v
int k = 0; // Initialize result (must do!)
count(a.begin(), a.end(), v, k); // Set k to number of values v in a
if (k > sum) {
sum = k; // Save current maximum sum
value = v; // Save associated search value
}
}

count_if(a.begin(), a.end(), is_even<int>(), numEvens);

copy(a.begin(), a.end(),
ostream_iterator<int>(cout, " "));
cout << endl << endl;
cout << "Most frequent value = " << value
<< " (" << sum << ")" << endl;
cout << "Number of even values = " << numEvens << endl;

return 0;
}

count 实参哪里错了?
dolphin9@debian-gre:~/Program/GNU C++ SRC/c25$ g++ -o count-ex count-ex.cpp
count-ex.cpp: In function `int main()':
count-ex.cpp:39: error: no matching function for call to `count(
__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >,
__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >,
int&, int&)'
count-ex.cpp:46: error: no matching function for call to `count_if(
__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >,
__gnu_cxx::__normal_iterator<int*, std::vector<int, std::allocator<int> > >,
is_even<int>, int&)'


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-04-25 12:37 

注册: 2005-10-26 22:18
帖子: 31
送出感谢: 0 次
接收感谢: 0 次
这是哪本书里面的代码?

count和count_if的用法过时了,

改成:
k=count (a.begin (), a.end (), v);

numEvens=count_if (a.begin (), a.end (), is_even < int >());

就好了.


_________________
HP nx 6120,
cpu CM 1.5G,
chip 915GM,
memory 512M,
harddisk 40G 5400rpm。

ubuntu 7.04 feisty,
with beryl, etc.


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-04-25 12:55 
头像

注册: 2006-11-22 10:57
帖子: 180
送出感谢: 0 次
接收感谢: 0 次
行了。谢谢ls.
gnu c++ for linux
Tom swan
确实比较老,看注释是1999的


_________________
Ubuntu 8.04
IBM R52-18465DC
CPU:PM 1.73Ghz DDR2:768MB 533Mhz
INTEL 915GM/915PM
ATI Mobility Radeon X300 64MB
40G SATA


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-04-26 20:52 
头像

注册: 2006-12-02 12:25
帖子: 689
送出感谢: 0 次
接收感谢: 0 次
呵呵,那本书下了,没看,看来是不用看了


_________________
Titainium


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 4 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译