如何new一个vector
时间: 2023-07-04 07:26:19 浏览: 38
要创建一个vector,可以使用以下代码:
```
#include <vector>
std::vector<int> myVector;
```
这将创建一个空的整数向量。你还可以在创建时初始化向量,例如:
```
std::vector<int> myVector = {1, 2, 3, 4, 5};
```
这将创建一个整数向量,并用1、2、3、4和5初始化向量。
相关问题
unity里面每new一个vector2类型的变量都会增加开销吗
在Unity中,每次使用new关键字来创建Vector2类型的变量都会增加一些开销,因为这将会在堆上分配内存。堆上内存分配和回收需要更多的时间和处理器资源,因此如果你需要在程序中频繁地创建Vector2类型的变量,那么这种方式可能会对性能产生一定的影响。
为了避免这种开销,Unity提供了一些内置的Vector2变量,如Vector2.zero、Vector2.one、Vector2.up等等。这些变量在程序运行时已经被初始化,且都是值类型的,因此它们不需要在堆上分配内存,这样可以避免使用new关键字的开销。如果你需要使用这些预定义的变量中的某一个,只需要直接引用即可,例如:Vector2.zero、Vector2.one等等。这样可以提高程序的性能和效率。
C++实现一个vector
好的,我可以向您展示如何实现一个简单的vector类。
首先,我们需要定义一个类:
```c++
template <typename T>
class Vector {
private:
T* arr;
int size;
int capacity;
public:
Vector();
~Vector();
void push_back(T val);
void pop_back();
T& operator[](int index);
int getSize();
int getCapacity();
};
```
其中,arr是指向存储元素的数组的指针,size表示当前元素的数量,capacity表示当前数组的容量。
接下来,我们需要实现每个函数:
```c++
template <typename T>
Vector<T>::Vector() {
arr = new T[1];
size = 0;
capacity = 1;
}
template <typename T>
Vector<T>::~Vector() {
delete[] arr;
}
template <typename T>
void Vector<T>::push_back(T val) {
if (size == capacity) {
T* temp = new T[capacity * 2];
for (int i = 0; i < size; i++) {
temp[i] = arr[i];
}
delete[] arr;
arr = temp;
capacity *= 2;
}
arr[size] = val;
size++;
}
template <typename T>
void Vector<T>::pop_back() {
if (size > 0) {
size--;
}
}
template <typename T>
T& Vector<T>::operator[](int index) {
return arr[index];
}
template <typename T>
int Vector<T>::getSize() {
return size;
}
template <typename T>
int Vector<T>::getCapacity() {
return capacity;
}
```
这些函数实现了向vector添加元素、删除元素、访问元素以及获取vector大小和容量的功能。
现在,您可以使用该类来创建一个vector对象并开始添加、删除和访问元素了!
请注意,这只是一个简单的实现,实际上STL vector类包含了更多功能和优化。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)