实现 Sufe::Array模板类功能,用给定的 main.cpp通过测试 两种初始化方式 调用Size(),[],At(),<<输出到屏幕 For-each遍历 調用Sort(),对数组自身排序 Debug中观察arr_4.Size()和arr_7.Size()的入口地址不同
时间: 2024-10-09 11:02:20 浏览: 14
实现 Sufe::Array 模板类,首先需要定义一个通用的数组容器,支持动态大小、元素访问、初始化、遍历、排序以及内存安全的操作。这是一个基础版本的 `Sufe::Array` 类设计:
```cpp
#include <iostream>
#include <vector>
template <typename T>
class Sufe::Array {
public:
// 构造函数,可以接受空初始化或指定初始容量
Array(size_t initial_capacity = 0) : arr_(initial_capacity) {}
// 获取数组大小
size_t Size() const { return arr_.size(); }
// 简单的下标访问
T& At(size_t index) {
if (index >= arr_.size()) {
throw std::out_of_range("Index out of range");
}
return arr_[index];
}
// 输出数组元素到屏幕
friend std::ostream& operator<<(std::ostream& os, const Array<T>& arr) {
for (const auto& element : arr) {
os << element << " ";
}
return os;
}
// 遍历数组
void ForEach(const std::function<void(T&)>& func) {
for (auto& element : arr_) {
func(element);
}
}
// 冒泡排序算法
void Sort() {
std::sort(arr_.begin(), arr_.end());
}
private:
std::vector<T> arr_; // 存储元素的动态数组
};
// 测试用例
int main() {
// 初始化方式一:固定大小
Sufe::Array<int> arr_1(5);
arr_1[0] = 1; // 示例赋值
std::cout << "arr_1: " << arr_1 << std::endl;
// 初始化方式二:动态大小
Sufe::Array<std::string> arr_2; // 默认初始为空
arr_2.At(0) = "Hello";
arr_2.Sort();
std::cout << "arr_2: " << arr_2 << std::endl;
// 输出数组大小,可以看到地址不同
std::cout << "arr_4.Size(): " << arr_1.Size() << std::endl;
std::cout << "arr_7.Size(): " << arr_2.Size() << std::endl;
return 0;
}
```
阅读全文