Essential c++第二章笔记

①函数如果有返回值,就必须在所有可能返回的点上将值返回

<练习>
2.1

#include <iostream>
using namespace std;
bool fibon_elem(int, int &);
int main(void)
{
	int pos;
	cout << "Please enter a position:(-1 to quit)";
	cin >> pos;
	while(pos > 0)
	{
		int elem;
		if(fibon_elem(pos, elem))
			cout << "ellement # " << pos
				 << " is " << elem << endl;
		else
			cout << "Sorry. Coutld not calculate element # "
				 << pos << endl;
		cout << "Please enter a position:(-1 to quit)";
		cin >> pos;
	}
	return 0;
}
bool fibon_elem(int pos, int & elem)
{
	if(pos > 1024)
	{
		elem = 0;
		return false;
	}
	elem = 1;
	int n_2 = 1, n_1 = 1;
	for(int i = 3; i <= pos; i++)
	{
		elem = n_2 + n_1;
		n_2 = n_1;
		n_1 = elem;
	}
	return true;
}

②pi = new int(123)可将pi对象初值设置为123,释放对象的空间需要delete,释放对象的数组需要delete[],并且释放并不需要检查对象是否为NULL
③将函数定义成inline,只是对编译器的一种要求,是否执行则视编译器而定
④只是返回值类型不同不足以将函数重载

<练习>
2.2

#include <iostream>
#include <vector>
using namespace std;
void Show(vector<int> &);
bool Pentagonal(int, vector<int> &);
int main(void)
{
    int num;
    vector<int> vec;
    cout << "请输入需要多少个元素:";
    cin >> num;
    if(Pentagonal(num, vec))
        Show(vec);
    else
        cout << "您所输入的值太大" << endl;
    return 0;
}
bool Pentagonal(int num, vector<int> & vec)
{
    if(num <= 0 || num > 1024)
        return false;
    for(int i = 1; i <= num; i++)
        vec.push_back(i * (3 * i - 1) / 2);
    return true;
}
void Show(vector<int> & vec)
{
    for(int i = 0; i < vec.size(); i++)
        cout << vec[i] << ',';
    cout << endl;
}

2.3

#include <iostream>
#include <vector>
using namespace std;
inline bool Text(int num)
{
    if(num <= 0 || num > 1024)
        return false;
    return true;
}
void Enter(int, vector<int> &);
void Show(vector<int> &);
bool Pentagonal(int, vector<int> &);
int main(void)
{
    int num;
    vector<int> vec;
    cout << "请输入需要多少个元素:";
    cin >> num;
    if(Pentagonal(num, vec))33
        Show(vec);
    else
        cout << "您所输入的值太大" << endl;
    return 0;
}
bool Pentagonal(int num, vector<int> & vec)
{
    if(Text(num))
    {
        Enter(num, vec);
        return true;
    }
    return false;
}
void Show(vector<int> & vec)
{
    for(int i = 0; i < vec.size(); i++)
        cout << vec[i] << ',';
    cout << endl;
}
void Enter(int num, vector<int> & vec)
{
    for(int i = 1; i <= num; i++)
        vec.push_back(i * (3 * i - 1) / 2);
}

2.4

#include <iostream>
#include <vector>
using namespace std;
int index(const vector<int> &, int);
const vector<int> * Pentagonal(int);
int main(void)
{
    const vector<int> * vec = Pentagonal(0);
    cout << "请输入要返回的索引:";
    int dex;
    cin >> dex;
    cout << index(*vec, dex) << endl;
    return 0;
}
int index(const vector<int> & vec, int num)
{
    if(num > vec.size())
        Pentagonal(num);
    return vec[num - 1];
}
const vector<int> * Pentagonal(int num)
{
    static vector<int> vec;
    vec.clear();
    for(int i = 1; i <= num; i++)
        vec.push_back(i * (3 * i - 1) / 2);
    return &vec;
}

2.5

//小多 懒得写
#include <iostream>
#include <vector>
int & max(int, int);
float & max(float, float);
string & max(string, string);
vector & max(vector<int>);
vector & max(vector<float>);
vector & max(vector<string>);
int * max(int [], int);
float * max(float [], int);
string * max(string [], int);
using namespace std;
int main(void)
{
    return 0;
}

2.6

#include <iostream>
#include <vector>
template<typename T>
T max(T, T);
template<typename T>
vector<T> max(vector<T>);
using namespace std;
int main(void)
{
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值