int fun() { //=======begin======= //========end======== return 0; }编写实现动态数组的程序
时间: 2024-10-07 11:03:40 浏览: 27
mysql与oracle差异总结
在C++或类似语言中,动态数组通常通过`std::vector`或自定义`动态数组`类来实现,而不是直接像函数那样编写。动态数组允许你在运行时动态地分配和释放内存,下面是一个简单的自定义`动态数组`类的例子:
```cpp
template <typename T>
class DynamicArray {
private:
T* data;
size_t capacity;
size_t size;
public:
DynamicArray(size_t initial_capacity = 5) {
data = new T[initial_capacity];
capacity = initial_capacity;
size = 0;
}
~DynamicArray() {
delete[] data;
}
void resize(size_t newSize) {
if (newSize > capacity) {
T* newData = new T[newSize];
for (size_t i = 0; i < size; ++i)
newData[i] = data[i];
delete[] data;
data = newData;
capacity = newSize;
}
}
void push_back(T value) {
if (size == capacity) {
resize(capacity * 2); // double the current capacity
}
data[size++] = value;
}
T& operator[](size_t index) {
assert(index < size);
return data[index];
}
const T& at(size_t index) const {
assert(index < size);
return data[index];
}
// 其他方法如获取大小、清空等...
private:
DynamicArray(const DynamicArray&) = delete; // 防止复制构造
DynamicArray& operator=(const DynamicArray&) = delete; // 防止赋值操作
};
// 使用示例:
int main() {
DynamicArray<int> arr;
arr.push_back(0);
arr.resize(10); // 动态扩容
int result = arr[0]; // 访问元素
return 0;
}
```
在这个例子中,我们创建了一个动态数组模板类,可以存储任意类型的元素,并提供了一些基本的操作,如添加元素、调整大小以及访问指定索引的元素。
阅读全文