这段时间我突然对C++ boost有了兴趣
学习教程网站:http://zh.highscore.de/cpp/boost/
它的每个章节后面都有练习,用以强化你在这章学到的知识,但想看这些练习的答案是要花钱买的,所以自己做个笔记,用以让别人对照,如发现我里面的错误,请回复告之,不胜感激。
第一章: 简介(无)
第二章: 智能指针
练习1
使用适当的智能指针优化下面的程序:
#include <iostream>
#include <cstring>
char *get(const char *s)
{
int size = std::strlen(s);
char *text = new char[size + 1];
std::strncpy(text, s, size + 1);
return text;
}
void print(char *text)
{
std::cout << text << std::endl;
}
int main(int argc, char *argv[])
{
if (argc < 2)
{
std::cerr << argv[0] << " <data>" << std::endl;
return 1;
}
char *text = get(argv[1]);
print(text);
delete[] text;
}
尝试改善:
#include <iostream>
#include <cstring>
#include <boost/shared_array.hpp>
boost::shared_array<char> get(const char *s)
{
size_t size = std::strlen(s);
boost::shared_array<char> text(new char[size + 1]);
std::strncpy(text.get(), s, size + 1);
return text;
}
void print(boost::shared_array<char> text)
{
std::cout << text.get() << std::endl;
}
int main(int argc, char *argv[])
{
if (argc < 2)
{
std::cerr << argv[0] << " <data>" << std::endl;
return 1;
}
boost::shared_array<char> text = get(argv[1]);
print(text);
}
练习2
优化下面的程序:
#include <vector>
template <typename T>
T *create()
{
return new T;
}
int main()
{
std::vector<int*> v;
v.push_back(create<int>());
}
尝试改善:
#include <boost/ptr_container/ptr_vector.hpp>
template <typename T>
T *create()
{
return new T;
}
int main()
{
boost::ptr_vector<int> v;
v.push_back(create<int>());
}
版权声明:本文为u010921682原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。