C++学习笔记 54 自定义Array

#include<iostream>

template<typename T, size_t S>
class Array {
private:
	T m_Data[S];
public:
	constexpr int Size() const { return S; }

	T& operator[](size_t index) { return m_Data[index]; }
	const T& operator[](size_t index) const { return m_Data[index]; }
	
	T* Data() { return m_Data; }
	const T* Data() const { return m_Data; }

	//Array(int size) {
	//	//在栈上分配空间
	//	//m_Data = (int*)alloca(size);
	//}
};


int main() {
	//int array[5];
	int size = 5;
	Array<int, 5> data;
	static_assert(data.Size() < 10, "Size is too large!");

	memset(&data[0], 0, data.Size() * sizeof(int));

	data[1] = 10;
	data[4] = 20;
	for (int i = 0; i < data.Size(); i++) {
		std::cout << data[i] << std::endl;
	}

	Array<std::string, data.Size()> newArray;
	newArray[0] = "Hello";
	newArray[4] = "World";
	for (int i = 0; i < newArray.Size(); i++) {
		std::cout << newArray[i] << std::endl;
	}

	std::cin.get();
}
posted @ 2026-01-04 20:07  超轶绝尘  阅读(3)  评论(0)    收藏  举报