编写函数,返回一个动态分配的vector<int>;将此vector传递给另一个函数,此函数从标准输入中读取数据,保存在vector中;再将此vector传递给另外一个函数,输出所有值到标准输出。要求传递参数时使用智能指针,不能使用内置指针、简单引用及new/delete运算符。
时间: 2024-10-19 19:12:31 浏览: 18
通过代码实例解析c++ vector常用方法
在C++中,你可以使用`std::shared_ptr`作为智能指针来管理动态分配的数据,特别是像`std::vector`这样的资源。这里是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <memory>
#include <sstream>
// 函数一:创建并返回智能指针指向的vector
std::shared_ptr<std::vector<int>> create_vector() {
std::vector<int> vec;
// 想要在vector中添加元素,可以在这里操作
return std::make_shared<std::vector<int>>(vec);
}
// 函数二:从标准输入读取数据,并更新智能指针指向的vector
void read_data(std::shared_ptr<std::vector<int>>& vec) {
int value;
while (std::cin >> value) {
vec->push_back(value); // 使用*运算符访问实际vector
}
}
// 函数三:输出智能指针指向的所有值
void print_values(const std::shared_ptr<std::vector<int>>& vec) {
for (const auto& val : *vec) { // 使用*运算符解引用获取vector内容
std::cout << val << " ";
}
std::cout << std::endl;
}
int main() {
std::shared_ptr<std::vector<int>> my_vec = create_vector();
read_data(my_vec);
print_values(my_vec);
return 0;
}
```
在这个例子中,我们通过`std::make_shared`来创建一个智能指针,它自动管理了内存分配和释放。`read_data`函数接收一个`std::shared_ptr`作为参数,然后在其内部直接修改共享的vector。`print_values`函数同样使用了解引用`*`来访问vector的内容。
阅读全文