C++ Primer 3.4.2例题二分搜索及练习3.25、3.32、3.33、3.36

1.例题二分搜索

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> text{ 1,2,3,4,5 };
	int sought;
	cin >> sought;
	auto beg = text.begin(),end = text.end();
	auto mid = beg + (end - beg) / 2;
	while (mid != end && *mid != sought)
	{
		if (*mid > sought)
		{
			end = mid;
		}
		else
			beg = mid + 1;
		mid = beg + (end - beg) / 2;
	}
	if (mid == end)
		cout << "No result" << endl;
	else
		cout << *mid << endl;
	system("pause");
}

2.练习3.25

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> scores(11, 0);
	int grade;
	while (cin >> grade)
	{
		if (grade <= 100)
			++*(scores.begin() + grade / 10);
	}
	for (auto i : scores)
	{
		cout << i << ends;
	}
	system("pause");
}

3.练习3.32:(只写了vector的,因为数组的和C一样)

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> a, b;
	for (unsigned i = 0; i != 10; i++)
	{
		a.push_back(i);
	}
	b = a;
	for (auto i : b)
	{
		cout << i << endl;
	}
	system("pause");
}

4.练习3.33

结果:

5.练习3.36

数组:

#include<iostream>
#include<iterator>
using namespace std;
int main()
{
	int a[] = { 1,2,3,4,5 };
	int b[] = { 1,2,3,4,5,7,8 };
	int size_a = end(a) - begin(a);
	int size_b = end(b) - begin(b);
	if (size_a != size_b)
	{
		cout << "Not equal" << endl;
		system("pause");
	}
	else
	{
		for (unsigned i=0;i!=size_a;i++)
		{
			if (a[i] != b[i])
			{
				cout << "Not equal" << endl;
				system("pause");
			}
		}
	}
	cout << "Equal" << endl;
	system("pause");
}

vector:

#include<iostream>
#include<vector>
using namespace std;
int main()
{
	vector<int> v1(10, 42);
	vector<int> v2(10, 42);
	if (v1 == v2)
		cout << "Equal" << endl;
	else
		cout << "Not equal" << endl;
	system("pause");
}

欢迎交流探讨。

谢谢。

猜你喜欢

转载自blog.csdn.net/weixin_44009743/article/details/86719951