C++Primer第五版 10.2.3节练习
2015-09-18 07:46
651 查看
练习10.9:实现你自己的elimDups。测试你的程序,分别在读取输入后,调用unique后以及调用erase后打印vector的内容。
答:见练习10.9.cpp
练习10.10:你认为算法不会改变容器大小的原因是什么?
答:个人觉得,泛型算法是要适合几乎所有的对象,比如固定长度的数组,以及可改变长度的一些容器,而改变长度的这些容器,应该由容器本身的操作所决定,算法只是负责在容器的可输入范围内,执行操作。如果算法考虑到改变容器的大小,无疑执行效率是要降低的,因此,改变容器大小的操作应由容器自己来做。
练习10.9
答:见练习10.9.cpp
练习10.10:你认为算法不会改变容器大小的原因是什么?
答:个人觉得,泛型算法是要适合几乎所有的对象,比如固定长度的数组,以及可改变长度的一些容器,而改变长度的这些容器,应该由容器本身的操作所决定,算法只是负责在容器的可输入范围内,执行操作。如果算法考虑到改变容器的大小,无疑执行效率是要降低的,因此,改变容器大小的操作应由容器自己来做。
练习10.9
/* *练习10.9 *2015/8/12 *问题描述:练习10.9:实现你自己的elimDups。测试你的程序,分别在读取输入后,调用unique后以及调用erase后打印vector的内容 *说明:字符串去重复排序 *作者:Nick Feng * 邮箱:nickgreen23@163.com */ #include <iostream> #include <string> #include <vector> #include <algorithm> using namespace std; void elimDups(vector<string> &words) { sort(words.begin(), words.end()); auto end_unique = unique(words.begin(), words.end()); cout << "After unique..." << endl; for(auto i = 0; i != words.size(); ++i) cout << words[i] << " "; cout << endl; words.erase(end_unique,words.end()); cout << "After erase..." << endl; for(auto i = 0; i != words.size(); ++i) cout << words[i] << " "; cout << endl; } int main() { string word; vector<string> words; while(cin >> word) words.push_back(word); elimDups(words); return 0; }
相关文章推荐
- C++Primer第五版 10.2.2节练习
- C++Primer第五版 10.2.1节练习
- C++Primer第五版 10.1节练习
- C++Primer第五版 第9章 顺序容器(练习解答)
- C++Primer第五版 9.6节练习
- C++Primer第五版 9.5.5节练习
- C++Primer第五版 9.5.3节练习
- C++Primer第五版 9.5.2节练习
- C++Primer第五版 9.5.1节练习
- C++Primer第五版 9.4节练习
- C++Primer第五版 9.3.5节练习
- C++Primer第五版 9.3.4节练习
- C++Primer第五版 9.3.3节练习
- C++Primer第五版 9.3.2节练习
- C++程序与非C++程序的链接
- 单例模式简介以及C++版本的实现
- c++ primer第五版(中文)习题答案 第十章第一节第一小节-概述
- C++:数组排列组合的问题。
- 插入排序(C/C++)
- const在函数前与函数后的区别