C++手写vector
时间: 2023-10-19 21:33:10 浏览: 112
C++中的`vector`是一种动态数组,可以容纳不同类型的元素,并且可以根据需要动态调整大小。下面是一个手写的简单示例:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> myVector; // 声明一个整数类型的vector
// 添加元素到vector
myVector.push_back(10);
myVector.push_back(20);
myVector.push_back(30);
// 遍历vector并打印元素
for (int i = 0; i < myVector.size(); i++) {
std::cout << myVector[i << " ";
}
return 0;
}
```
在上述示例中,我们首先包含了`iostream`和`vector`头文件。然后,我们声明了一个名为`myVector`的整数类型vector。使用`push_back`函数,我们将三个整数值添加到vector中。最后,我们使用一个循环来遍历vector并打印出每个元素的值。
输出结果为:
```
10 20 30
```
这是一个简单的手写vector的例子,你可以根据需要调整代码,并使用不同类型的元素。
相关问题
c++手写vector
好的,这是手写 vector 的代码示例:
```
#include <iostream>
#include <memory>
template <typename T>
class MyVector {
public:
MyVector() : size_(0), capacity_(8) {
data_ = std::make_unique<T[]>(capacity_);
}
~MyVector() {
clear();
}
void push_back(const T& value) {
if (size_ == capacity_) {
reserve(capacity_ * 2);
}
data_[size_++] = value;
}
void pop_back() {
if (size_ > 0) {
--size_;
}
}
void clear() {
size_ = 0;
capacity_ = 8;
data_.reset(new T[capacity_]);
}
void reserve(int new_capacity) {
if (new_capacity <= capacity_) {
return;
}
std::unique_ptr<T[]> new_data = std::make_unique<T[]>(new_capacity);
for (int i = 0; i < size_; ++i) {
new_data[i] = data_[i];
}
data_ = std::move(new_data);
capacity_ = new_capacity;
}
T& operator[](int index) {
return data_[index];
}
const T& operator[](int index) const {
return data_[index];
}
int size() const {
return size_;
}
int capacity() const {
return capacity_;
}
private:
int size_;
int capacity_;
std::unique_ptr<T[]> data_;
};
int main() {
MyVector<int> vec;
for (int i = 0; i < 10; ++i) {
vec.push_back(i);
}
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
vec.pop_back();
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
vec.clear();
for (int i = 0; i < 10; ++i) {
vec.push_back(i);
}
vec.reserve(20);
for (int i = 0; i < vec.size(); ++i) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
手写vector c++
手写vector c可以按照以下步骤进行:
1. 创建一个类模板,取名为Vector,其中包含私有成员变量capacity(容量)、size(大小)和指向存储元素的指针arr。
2. 在构造函数中,初始化capacity和size为0,并为arr分配一块大小为0的内存。
3. 实现析构函数,释放arr指向的内存。
4. 实现成员函数capacity(),返回当前容量。
5. 实现成员函数size(),返回当前大小。
6. 实现成员函数empty(),判断容器是否为空。
7. 实现成员函数push_back(),将元素添加到容器的末尾。如果当前大小等于容量,需要进行扩容操作。
8. 实现成员函数pop_back(),删除容器的最后一个元素。
9. 实现成员函数swap(),交换两个容器的内容。
10. 实现成员函数clear(),清空容器中的所有元素。
11. 实现成员函数erase(),删除容器中指定位置的元素。
12. 重载赋值运算符=,以实现深拷贝。
请注意,这只是一个简易版的vector,具体实现可能会有所不同。
阅读全文