习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html

第10章 泛型算法


练习10.1

#include<iostream>
#include<algorithm>
#include<vector> using namespace std; int main() {
int t, n;
vector<int> vec;
cout << "请输入序列个数:" << endl;
cin >> n;
cout << "请输入序列:" << endl;
for (int i = 0;i < n;i++) {
cin >> t;
vec.push_back(t);
}
cout << "请输入要统计的值:" << endl;
int num;
cin >> num;
cout << count(vec.begin(), vec.end(), num) << endl; system("pause");
return 0;
}

练习10.2

#include<iostream>
#include<algorithm>
#include<list>
#include<string> using namespace std; int main() {
int n;
string t;
list<string> lst;
cout << "请输入字符串个数:" << endl;
cin >> n;
cout << "请输入" << n << "个字符串:" << endl;
for (int i = 0;i < n;i++) {
cin >> t;
lst.push_back(t);
}
cout << "请输入要统计的字符串:" << endl;
string num;
cin >> num;
cout << count(lst.begin(), lst.end(), num) << endl; system("pause");
return 0;
}

练习10.3

#include<iostream>
#include<numeric>
#include<vector> using namespace std; int main() {
vector<int> vec = { 1,2,3,4,5 };
int sum = accumulate(vec.begin(), vec.end(), 0);
cout << sum << endl;
return 0;
}

练习10.4

初始值设为0表示返回值为int类型,会有精度损失

练习10.5

equal会比较指针地址,而不是字符串值,比较的结果与string类型的不一致。

练习10.6

fill_n(vec.begin(),vec.size(),0);

练习10.7

a.lst和vec之间的大小未保证相同,vec.resize(lst.size)

b.vec.resize(10);

练习10.9

#include<iostream>
#include<numeric>
#include<vector>
#include<algorithm>
#include<string>
using namespace std; void elimDups(vector<string> &words) {
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
cout << "unique后:";
for (auto i : words) {
cout << i << " ";
}
cout << endl;
cout << "erase后:";
words.erase(end_unique, words.end());
for (auto i : words) {
cout << i << " ";
}
cout << endl;
} int main() {
vector<string> words = { "abc","abc","abc","bcd","efg","bcd","eqd" };
elimDups(words);
system("pause");
return 0;
}

练习10.10

标准库算法对迭代器而不是容器进行操作。

练习10.11

#include<iostream>
#include<numeric>
#include<vector>
#include<algorithm>
#include<string>
using namespace std; bool isShorter(const string &s1, const string &s2) {
return s1.size() < s2.size();
} void elimDups(vector<string> &words) {
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());
} int main() {
vector<string> words = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" };
elimDups(words);
stable_sort(words.begin(), words.end(), isShorter);
for (auto &i : words) {
cout << i << " ";
}
cout << endl;
system("pause");
return 0;
}

练习10.12

bool compareIsbn(const Sales_data &a, const Sales_data &b) {
        return a.isbn() < b.isbn();
}

练习10.13

#include<iostream>
#include<numeric>
#include<vector>
#include<algorithm>
#include<string>
using namespace std; bool cmp(const string &a) {
return a.size() >= 5;
} int main() {
vector<string> words = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" };
partition(words.begin(), words.end(), cmp);
for (auto &i : words) {
cout << i << " ";
}
cout << endl;
system("pause");
return 0;
}

练习10.14

#include<iostream>
using namespace std;
int main() {
auto f = [](int a,int b) {return a + b;};
cout << f(1, 2) << endl;
return 0;
}

练习10.15

#include<iostream>
using namespace std; int main() {
int a = 1;
auto f = [a](int b) {return a + b;};
cout << f(2) << endl; system("pause");
return 0;
}

练习10.16

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> using namespace std; vector<string> &elimDups(vector<string> &words)
{
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());
return words;
} void biggies(vector<string> &words, vector<string>::size_type sz)
{
elimDups(words);
stable_sort(words.begin(), words.end(),
[](const string &a, const string &b)
{ return a.size() < b.size(); });
auto wc = find_if(words.begin(), words.end(),
[sz](const string &a)
{ return a.size() >= sz; });
auto count = words.end() - wc;
cout << count << endl;
for(const auto s : words)
cout << s << " ";
cout << endl;
} int main()
{
vector<string> vs = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" }; biggies(vs, 5); return 0;
}

练习 10.18-10.19

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> using namespace std; vector<string> &elimDups(vector<string> &words)
{
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());
return words;
} void biggies(vector<string> &words, vector<string>::size_type sz)
{
elimDups(words);
auto wc = partition(words.begin(), words.end(),
[sz](const string &a)
{ return a.size() >= sz; }); //auto wc = stable_partition(words.begin(), words.end(),
//[sz](const string &a)
//{ return a.size() >= sz; }); auto count = words.end() - wc;
cout << count << endl;
for (const auto s : words)
cout << s << " ";
cout << endl;
} int main()
{
vector<string> vs = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" }; biggies(vs, 5);
system("pause");
return 0;
}

练习10.20

#include <iostream>
#include <string>
#include <vector>
#include <algorithm> using namespace std; int main()
{
vector<string> words = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" };
string::size_type sz = 6;
auto wc = count_if(words.begin(), words.end(),
[sz](const string &a)
{ return a.size() >= sz; });
cout << wc << endl;
system("pause");
return 0;
}

练习10.21

#include<iostream>
#include<algorithm> using namespace std; int main() {
int v = 5;
auto f = [&v]()->bool
{
if (v <= 0) return false;
else {
--v;
return true;
}
};
while (f()) {
cout << v << endl;
}
system("pause");
return 0;
}

练习10.22

#include<iostream>
#include<algorithm>
#include<vector>
#include<string>
#include<functional> using namespace std; bool judge_size(string &s, string::size_type sz) {
return s.size() >= sz;
} int main() {
vector<string> words = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" };
cout << count_if(words.begin(), words.end(), bind(judge_size, placeholders::_1, 6)) << endl; system("pause");
return 0;
}

练习10.23

假设要绑定的函数有n个参数,绑定取n + 1个参数。另外一个是函数本身的绑定。

练习10.24

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional> using namespace std;
bool check_size(string &s, int sz)
{
return s.size() < sz;
} int main()
{
vector<int> vi = { 1,2,3,4,5,6 };
string s("aaaa"); auto iter = find_if(vi.begin(), vi.end(), bind(check_size, s, placeholders::_1)); cout << *iter << endl;
system("pause");
return 0;
}

练习10.25

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <functional> using namespace std; vector<string> &elimDups(vector<string> &words)
{
sort(words.begin(), words.end());
auto end_unique = unique(words.begin(), words.end());
words.erase(end_unique, words.end());
return words;
} bool check_size(const string &s, string::size_type sz)
{
return s.size() >= sz;
} int main()
{
vector<string> vs = { "the","quick","red","fox","jumps","over","the","slow","red","turtle" }; auto iter = partition(vs.begin(), vs.end(), bind(check_size, placeholders::_1, 5));
for (const auto s : vs)
cout << s << " ";
cout << endl; vs.erase(iter, vs.end());
for (const auto s : vs)
cout << s << " ";
cout << endl;
system("pause");
return 0;
}

后续部分之后再更新。。

C++Primer第五版——习题答案详解(九)的更多相关文章

  1. C++Primer第五版——习题答案详解(一)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第1章 开始&&第2章 变量和基本类型 练习1.3 #include&l ...

  2. C++Primer第五版——习题答案详解(二)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第3章 字符串.向量和数组 练习3.2 一次读入一整行 #include<iost ...

  3. C++Primer第五版——习题答案详解(三)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第4章 表达式 练习4.10 while(cin>>i&&i ...

  4. C++Primer第五版——习题答案详解(四)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第5章 语句 练习5.9 #include<iostream> #inclu ...

  5. C++Primer第五版——习题答案详解(五)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第6章 函数 练习6.4 #include<iostream> using ...

  6. C++Primer第五版——习题答案详解(六)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第7章 类 练习7.1 class Sales_data { public: std:: ...

  7. C++Primer第五版——习题答案详解(七)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第8章 IO库 练习8.1 istream &iofunc(istream &a ...

  8. C++Primer第五版——习题答案详解(八)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第9章 顺序容器 练习9.1 a.list,需要按字典序插入,可能插入位置在中间 b.d ...

  9. C++Primer第五版——习题答案详解(十)

    习题答案目录:https://www.cnblogs.com/Mered1th/p/10485695.html 第11章 关联容器 练习11.3 #include<iostream> #i ...

随机推荐

  1. vscode之快速生成vue模板

    文件-首选项-用户代码片段-搜索“vue”点击进入vue.json 复制这个片段 { "Vue component": { "prefix": "vu ...

  2. MySQL造数据脚本-亲试

    DELIMITER $$CREATE DEFINER=`root`@`192.168.2.254` PROCEDURE `pjzzspdz_fpmx_initdata12101245`()BEGIN ...

  3. 基于c#的windows基础设计(学习日记1)【关于异或运算】

    第一次接触异或运算,总体来说比哈希算法简单的多,无论是理解还是代码的难易度,唯一不好的是在固定了密钥之后,随机性就小了很多,所以安全性比起哈希算法还是有所差距. 原理在网站上很多都有所以就不再赘述了. ...

  4. Javascript时间戳和日期时间的相互转换

    跟后台对接的时候经常碰到时间格式的问题,有时返回的是时间戳,有时返回的是具体时间,需求又需要它们之间的转换,所以干脆把之前遇到过的情况都给记录下来,以供自己参考! 本文备注:(时间戳单位为毫秒ms,换 ...

  5. webstorm crack

    webstorm 2018.2注册码如下:{"licenseId":"ThisCrackLicenseId","licenseeName": ...

  6. mysql中关于关联索引的问题——对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引?

    情况描述:在MySQL的user表中,对a,b,c三个字段建立联合索引,那么查询时使用其中的2个作为查询条件,是否还会走索引? 根据查询字段的位置不同来决定,如查询a,     a,b    a,b, ...

  7. configure、make 和 make install 的区别

    Linux编译安装中configure.make和make install各自的作用 ./configure是用来检测你的安装平台的目标特征的.比如它会检测你是不是有CC或GCC,并不是需要CC或GC ...

  8. Windows IIS服务挂载NAS共享文件存储

    本文介绍如何结合阿里云NAS的SMB协议支持和ECS Windows虚拟机,使用Windows内置的互联网信息服务(IIS)来提供Web和FTP服务. 阿里云文件存储服务NAS主要面向阿里云ECS 实 ...

  9. 【Java集合系列二】LinkedList解析

    一.简介 1.LinkedList继承关系 2.LinkedList底层实现 LinkedList使用双向链表存储数据,所以没有默认的容量,也不会有扩容一说.只有两个指针,永远指向链表的两端:firs ...

  10. leetcode python 009

    ##懒得自己做 ##  验证回文数字int0=63435435print(int(str(int0)[::-1])==int)