c++ primer 学习笔记11--动态内存
2015-04-14 09:51
253 查看
书本411页。练习12.6:编写函数,返回一个动态分配的int的vector。将此vector传递给另一个函数,这个函数读取标准输入,将输入的值保存在vector元素中,再将vector传递给另一个函数,打印输入的值。记得在恰当的时候delete vector。
#include <iostream> #include <vector> using namespace std; vector<int> *new_vector(void) { return new(nothrow) vector<int>; } void read_ints(vector<int> *pv) { int v; while (cin >> v) { pv->push_back(v); } } void print_ints(vector<int> *pv) { for (const auto &v : *pv) cout << v << " "; cout << endl; } int main(int argc, char *argv[]) { vector<int> *pv = new_vector(); if (!pv) { cout << "内存不足" << endl; return -1; } read_ints(pv); print_ints(pv); delete pv; pv = nullptr; }12.7使用shared_ptr。非内置指针
#include <iostream> #include <vector> #include <memory> using namespace std; shared_ptr<vector<int>> new_vector(void) { return make_shared<vector<int>>(); } void read_ints(shared_ptr<vector<int>> spv) { int v; while (cin >> v) { spv->push_back(v); } } void print_ints(shared_ptr<vector<int>> spv) { for (const auto & c : *spv) { cout << c << " "; } cout << endl; } int main(int argc, char *argv[]) { auto spv = new_vector(); read_ints(spv); print_ints(spv); return 0; }12.23连接两个字符串字面常量,将结果保存在一个动态的分配char数组中。
#include <iostream> #include <cstring> using namespace std; int main(int argc, char *argv[]) { const char*c1 = "Hello "; const char*c2 = "World"; char *r = new char[strlen(c1) + strlen(c2) + 1]; strcpy(r, c1);//拷贝 strcat(r, c2);//链接 cout << r << endl; string s1 = "Hello "; string s2 = "World"; strcpy(r, (s1 + s2).c_str()); cout << r << endl; delete[]r; return 0; }12.24从标准输入中读取一个字符串,存入一个动态分配的字符数组中。描述你的程序如何处理变长输入
#include <iostream> #include <cstring> using namespace std; int main(int argc, char *argv[]) { char c; char *r = new char[20]; int l = 0; while (cin.get(c)) { if (isspace(c)) break; r[l++] = c; if (l == 20) { cout << "容量大于上限" << endl; break; } } r[l] = 0; cout << r << endl; delete[]r; return 0; }
相关文章推荐
- C++ Primer 学习笔记11 函数(函数调用、引用形参、非引用形参)
- 《c++ primer》 第12章 动态内存 学习笔记
- C++ Primer 学习笔记——动态内存和智能指针(2)
- C++ Primer 学习笔记_37_STL实践与分析(11)--set类型
- 《c++ primer》 第12章 动态内存 学习笔记
- C++ 11 从C++ primer第五版的学习笔记
- C++ Primer 学习笔记——动态内存与智能指针(1)
- C++ Primer 学习笔记_11_指针
- 【C++ Primer 学习笔记】chapter 11 泛型算法
- C++ Primer 学习笔记与思考_11 try..catch语句及相关疑点
- 11. JAVA常用类库 Part 3 (Math类、Random类、NumberFormat类、BigInteger类和BigDecimal类) ----- 学习笔记
- C++ Primer 学习笔记_8_标准库类型(续2) -- iterator
- Python学习笔记11:Python函数和函数式编程
- 【DirectX 11 SDK 学习笔记】3D Transformation
- java 学习笔记11之对象序列化
- c++ primer 学习笔记-第三章
- C++ Primer 学习笔记_Chapter4 数组和指针–指针
- c++ primer学习笔记1
- java学习笔记(11)--网络通信
- [maya学习笔记(11)] 结合分离提取 布尔运算