练习2.2
#include <vector>
#include <iostream>
const std::vector<int>* penta_seq(int size) {
const int max_size = 1024;
static std::vector<int>elems;
if (size <= 0 || size > max_size) {
std::cerr << "the size is illeage"
<< size << "can't fulfill request" << std::endl;
return 0;
}
for (int ix = 0; ix <size;++ix)
{
int seq_num = (ix*(3 * ix - 1)) / 2;
elems.push_back(seq_num);
}
return &elems;
}
void display() {
int a;
std::cout << "enter the size number";
std::cin >> a;
const std::vector<int> elems = *penta_seq(a);
//it is a point now
std::cout << "now the pentagonal seq is ";
for (auto it = elems.begin(); it != elems.end(); ++it) {
std::cout << *it<<" " ;
}
std::cout << std::endl;
}
int main() {
display();
getchar();
}
练习2.3
#include <iostream>
inline bool is_size_ok(int size) {
const int max_size = 1024;
if (size <= 0 || size > max_size)
return false;
else
return true;
}
const std::vector<int>* penta_seq(int size) {
static std::vector<int>elems;
if (!is_size_ok) {
return 0;
}
for (int ix = 0; ix <size;++ix)
{
int seq_num = (ix*(3 * ix - 1)) / 2;
elems.push_back(seq_num);
}
return &elems;
}
void display() {
int a;
std::cout << "enter the size number";
std::cin >> a;
const std::vector<int> elems = *penta_seq(a);
//it is a point now
std::cout << "now the pentagonal seq is ";
for (auto it = elems.begin(); it != elems.end(); ++it) {
std::cout << *it<<" " ;
}
std::cout << std::endl;
}
int main() {
display();
system("pause");
}
练习2.4
同上2.2,略
练习2.5,练习2.6
#include <vector>
#include <iostream>
#include <string>
#include <algorithm>
template<typename T>
T load_max(T a, T b) {
T c =(a>b)?a:b ;
return c;
}
int main() {
std::string a = "asdsa";
std::string b = "qwefs";
std::cout<<load_max(a, b);
getchar();
}
补充lambda表达式,python中也有,但C++中的与template联用有独特用法。
int main() {
int a=1; int b=2;
//lambda表达式
auto c = [a,b](int d) {
return a + b + d;
};
std::cout << c(12);
getchar();
}