C++ Primer课后练习10.29-10.33

本文通过四个课后练习示例介绍了C++中迭代器和标准算法的应用,包括从文件读取数据到容器、对容器进行排序及去重、以及使用自定义比较函数对复杂类型进行排序和累加等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//课后练习10.29
#include<iostream>
#include<string>
#include<vector>
#include<iterator>
#include<fstream>
using namespace std;
int main(void)
{
	ifstream in1("file1.txt");
	ifstream in2("file2.txt");
	istream_iterator<string> in_iterator(in1),in_iterator1(in2), eof;
	vector<string> vec1(in_iterator, eof);
	vector<string> vec2;
	while (in_iterator1 != eof)
	{
		vec2.push_back(*in_iterator1++);
	}
	ostream_iterator<string> out_iterator(cout, " ");
	for (auto ss : vec1)
		out_iterator = ss;
	cout << endl;
	for (auto ss : vec2)
		out_iterator = ss;
	cout << endl;
	return 0;
}
/****************************************************************/
//练习10.30
#include<iostream>
#include<numeric>
#include<algorithm>
#include<vector>
#include<iterator>
using namespace std;
int main(int argc, char * argv[])
{
	
	istream_iterator<int> in_iter(cin);
	istream_iterator<int> eof;
	vector<int> vec1(in_iter, eof);
	sort(vec1.begin(), vec1.end());
	ostream_iterator<int> out_iter(cout, " ");
	copy(vec1.begin(), vec1.end(), out_iter);
	cout << endl;

}
/********************************************************************/
//练习10.31
#include<iostream>
#include<numeric>
#include<algorithm>
#include<vector>
#include<iterator>
using namespace std;
int main(int argc, char * argv[])
{

	istream_iterator<int> in_iter(cin);
	istream_iterator<int> eof;
	vector<int> vec1(in_iter, eof);
	sort(vec1.begin(), vec1.end());
	ostream_iterator<int> out_iter(cout, " ");
	unique_copy(vec1.begin(), vec1.end(), out_iter);
	cout << endl;

}
/******************************************************************/
//练习10.32
#include<iostream>
#include<algorithm>
#include<numeric>
#include<iterator>
#include<vector>
#include<string>
#include"10.32.h"
using namespace std;
bool compareIsbn(Sales_item & s1, Sales_item & s2)
{
	return s1.isbn < s2.isbn;
}

int main(void)
{
	vector<Sales_item> vec;
	istream_iterator<Sales_item> in_iter(cin), eof;
	while (in_iter != eof)
	{
		vec.push_back(*in_iter++);
	}
	sort(vec.begin(), vec.end(), compareIsbn);
	auto vec1 = vec.begin();
	while (vec1 != vec.end())
	{
		auto opps = *vec1;
		auto r = find_if(vec1 + 1, vec.end(),
			[opps](const Sales_item & opps1){return opps != opps1; });

		cout<< accumulate(vec1 + 1, r, opps) << endl;
		vec1 = r;

	}
	return 0;
}
/*****************************************************************/






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值