vector中size与capacity区别
时间: 2023-05-03 10:01:58 浏览: 115
vector中size与capacity的区别是,size指的是当前vector中元素的个数,而capacity则是vector内部为存储这些元素所分配的空间大小。当size达到capacity时,vector会自动分配更多的空间以容纳更多元素。
相关问题
vector的size和capacity。
vector的size指的是当前vector中元素的个数,而capacity则是vector在不重新分配内存的情况下可以容纳的元素个数。当vector中元素个数超过capacity时,vector会重新分配内存,将capacity扩大。
给出vector中size()的实现代码
vector的size()函数实现比较简单,可以直接返回vector的成员变量`size_`的值。下面是一个简单的vector类示例,其中包含了size()函数的实现:
```c++
#include <iostream>
#include <cstring>
template <typename T>
class Vector {
public:
Vector() : data_(nullptr), size_(0), capacity_(0) {}
~Vector() { delete[] data_; }
// 返回vector中元素的个数
size_t size() const { return size_; }
// 在vector末尾添加一个元素
void push_back(const T& val) {
if (size_ == capacity_) {
reserve(capacity_ == 0 ? 1 : capacity_ * 2);
}
data_[size_++] = val;
}
// 重载下标运算符
T& operator[](size_t i) { return data_[i]; }
const T& operator[](size_t i) const { return data_[i]; }
private:
T* data_; // 存储vector中的元素
size_t size_; // vector中元素的个数
size_t capacity_; // vector分配的内存空间大小
// 分配足够的内存空间
void reserve(size_t n) {
if (n <= capacity_) {
return;
}
T* new_data = new T[n];
if (data_) {
for (size_t i = 0; i < size_; ++i) {
new_data[i] = data_[i];
}
delete[] data_;
}
data_ = new_data;
capacity_ = n;
}
};
int main() {
Vector<int> vec; // 定义一个int类型的vector
std::cout << "vec的大小为:" << vec.size() << std::endl; // 输出vector的大小
vec.push_back(1); // 在vector末尾添加元素1
std::cout << "vec的大小为:" << vec.size() << std::endl; // 输出vector的大小
vec.push_back(2); // 在vector末尾添加元素2
std::cout << "vec的大小为:" << vec.size() << std::endl; // 输出vector的大小
std::cout << "vec的第一个元素为:" << vec[0] << std::endl; // 访问vector中的第一个元素
std::cout << "vec的第二个元素为:" << vec[1] << std::endl; // 访问vector中的第二个元素
return 0;
}
```
输出结果:
```
vec的大小为:0
vec的大小为:1
vec的大小为:2
vec的第一个元素为:1
vec的第二个元素为:2
```
说明:上面的代码演示了一个简单的vector类的实现,其中包含了size()函数的实现。size()函数直接返回vector中元素的个数,即成员变量`size_`的值。另外,该vector类还实现了在vector末尾添加元素的push_back()函数和重载下标运算符[]。需要注意的是,当vector中的元素个数等于分配的内存空间大小时,需要重新分配足够的内存空间,以便继续添加元素。