题目就不具体描述了,以下是自己写的例子,可能有问题,仅供参考~
知识点简介:
1、iostream迭代器的简单实用
2、标准库算法的简单实用
3、重载操作符的简单使用
示例代码:
#include <iostream>
#include <vector>
#include <string>
#include <istream>
#include <iterator>
#include <algorithm>
#include <numeric>
using namespace std;
//使用简化的类
class Sales_Data
{
public:
Sales_Data() {}
Sales_Data( string s ) : bookNo( s )
{
}
string getBookNo()
{
return bookNo;
}
friend istream& operator >>( istream &in, Sales_Data &s )
{
in >> s.bookNo;
return in;
}
friend string operator+( string s1, Sales_Data &s )
{
return s1 + s.bookNo;
}
friend ostream& operator<<( ostream& out, Sales_Data &s )
{
out << s.bookNo;
return out;
}
friend bool operator ==( const Sales_Data &s1, const Sales_Data &s2 )
{
return s1.bookNo == s2.bookNo;
}
private:
string bookNo;
};
bool compareIsbn( Sales_Data &s1, Sales_Data &s2 )
{
return s1.getBookNo() > s2.getBookNo();
}
//by zhaocl
int main()
{
//使用cin,需要类重载>>操作符
istream_iterator<Sales_Data> sale_iter( cin ), eof;
//输入的元素拷贝到vector中
vector<Sales_Data> sale_vec( sale_iter, eof );
//排序
sort( sale_vec.begin(), sale_vec.end(), compareIsbn );
//求和,需要类重载+操作符
string s = "biu";
cout << accumulate( sale_vec.begin(), sale_vec.end(), s ) << endl;
//使用find,因为要比较所以需要类重载==操作符
s = "biu005";
auto iter = find( sale_vec.begin(), sale_vec.end(), s );
//因为输出,所以类需要重载<<操作符
if( iter != sale_vec.end() )
{
cout << "find:" << *iter << endl;
}
else
{
cout << "not find " << s << endl;
}
system( "pause" );
return 0;
}