//12.1.2节练习//练习12.6
#include<iostream>
#include<memory>
#include<vector>
using namespace std;
vector<int>* vect()
{
vector<int> *p = new vector<int>;
return p;
delete p;
}
vector<int>* read(vector<int>* vect)
{
auto p = vect;
int a;
while (cin >> a)
p->push_back(a);
return p;
delete p;
}
void print(vector<int>* read)
{
auto p = read;
for (auto &v : *p)
cout << v << ends;
}
int main()
{
print(read(vect()));
system("pause");
return 0;
#include<iostream>
#include<memory>
#include<vector>
using namespace std;
vector<int>* vect()
{
vector<int> *p = new vector<int>;
return p;
delete p;
}
vector<int>* read(vector<int>* vect)
{
auto p = vect;
int a;
while (cin >> a)
p->push_back(a);
return p;
delete p;
}
void print(vector<int>* read)
{
auto p = read;
for (auto &v : *p)
cout << v << ends;
}
int main()
{
print(read(vect()));
system("pause");
return 0;
}
//12.1.2节练习//练习12,7
#include<iostream>
#include<memory>
#include<vector>
using namespace std;
shared_ptr<vector<int>> vect()
{
shared_ptr<vector<int>> vect = make_shared<vector<int>>();
return vect;
}
shared_ptr<vector<int>> read(shared_ptr<vector<int>>& vect)
{
int a;
while (cin >> a)
vect->push_back(a);
return vect;
}
void print(shared_ptr<vector<int>> &read)
{
for (auto &v : *read)
cout << v << ends;
}
int main()
{
print(read(vect()));
system("pause");
return 0;
}
本文通过两个具体的C++编程练习实例,探讨了不同情境下如何使用裸指针和智能指针来管理动态分配的内存。第一个练习展示了裸指针在创建和管理动态数组时的使用及潜在问题;第二个练习则介绍了std::shared_ptr如何更安全地处理相同问题。
33万+

被折叠的 条评论
为什么被折叠?



