C++Primer第五版第十章練習問題の答え(1~10)


1:知識点:汎用アルゴリズム:アルゴリズムは、いくつかの古典的なアルゴリズムの共通インタフェース、ソート、検索を実現しているからです.汎用型は、異なるタイプの要素や複数のコンテナタイプ、さらには内蔵配列に作用するためです.旧称汎用アルゴリズム
知識点2:基本的にalgorithmとnumericの2つのヘッダファイルに定義されています
知識点3:これらのアルゴリズムは一般的に反復器にのみ作用し,容器を直接操作しない
#include
#include
#include
#include
using namespace std;

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	int value = 5;
	cout<

2:知識点:汎用アルゴリズムとは容器と要素の上に作用するいくつかの操作の集合であり、実際の状況では上手に使用しなければならない.
#include
#include
#include
#include
#include
using namespace std;

int main(int argc, char**argv)
{
	string a[10] = {"ds","das","123","123","123","123","123","123","123","123"};
	list list1(a,a+10);
	string value = "123";
	cout<

3:知識点:標準ライブラリは基本的に1つの範囲内のコンテナを操作するので、パラメータには必ず2つの範囲を表す反復器があります.
#include
#include
#include
#include
#include
using namespace std;

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	cout<

4:初期値を0に設定し、戻り値がintタイプであることを示します.使用後、doubleをintに変換し、精度を失います.
5:すべて正常ですが、Cスタイル文字列の比較はstrcmp()を利用したほうがいいです.
6:知識点1:2番目のシーケンスを単一の反復器で表すアルゴリズムは、2番目のシーケンスと1番目のシーケンスが等しいと仮定し、実際に等しくないとプログラムにエラーが発生します.
知識点2:fill()アルゴリズムの使用は、コンテナ自体に十分なサイズがあることを保証しなければならない.
#include
#include
#include
#include
#include
using namespace std;

int main(int argc, char**argv)
{
	int a[10] = {0,1,2,5,4,5,4,5,4,5};
	vector vec(a,a+10);
	cout<

7:
(a):lstとvecの間の大きさは同じであることは保証されていない、vec.resize(lst.size)
(b):reverseは容器容量を変化させ,その大きさを変化させずresize()
8:アルゴリズムは挿入反復器を生成しただけで、この反復器を使用して挿入操作を行います.
9:
#include
#include
#include
#include
#include
using namespace std;

void elimDups(vector &s)
{
	cout<::iterator str = unique(s.begin(),s.end());//unique  
	for (int i = 0; i s(a,a+10);
	elimDups(s);

	return 0;
}

10:これらのアルゴリズムは反復器にのみ作用するため、容器を直接操作しない.P 343ページnote
この段階で学んだいくつかの汎用アルゴリズム:find()検索,accmulate()和,equal()等しい判断,fill(),fill_n()付与、back_Insert()挿入操作,copy()コピー,sort()ソート,unique()並べ替えおよび重複除外