vector除了使用resize 还能用什么固定长度
时间: 2024-05-10 16:20:00 浏览: 109
vector可以使用以下方法固定长度:
1. 使用初始化列表: 可以直接在vector的构造函数中使用初始化列表来指定固定长度。
```cpp
std::vector<int> vec = {1, 2, 3, 4, 5}; // vec的长度为5
```
2. 使用assign函数: 可以使用assign函数来分配指定长度的元素到vector中。
```cpp
std::vector<int> vec;
vec.assign(5, 0); // vec的长度为5,值都为0
```
3. 使用reserve函数: 可以使用reserve函数来预留vector的容量,但是不会改变vector的长度。
```cpp
std::vector<int> vec;
vec.reserve(5); // vec的容量为5,长度为0
```
注意,使用reserve函数仅仅是为了提高vector的性能,但是vector的长度仍然为0,需要使用resize函数或者push_back函数来添加元素。
相关问题
如何固定vector的长度
在C++中,vector的长度可以通过resize()函数来固定。例如,要将vector的长度固定为10,可以使用以下代码:
```
vector<int> myVector;
myVector.resize(10);
```
这将使myVector具有10个元素,如果vector中没有元素,则它们都将被初始化为默认值。如果vector中已经有元素,则新的长度将保留前面的元素,并添加新的默认值元素以填充余下的空间。
std::vector<u8[DATA_LEN]> vecRecvBuff; vecRecvBuff.resize(521);有什么错误
`std::vector<u8[DATA_LEN]>` 定义了一个存储 `u8` 类型数组的 `vector`,其中每个数组的长度为 `DATA_LEN`。这样定义是有问题的,因为 C++ 中不支持数组类型作为容器的元素类型。
如果你要存储一组固定长度的字节数组,可以使用 `std::vector<std::array<u8, DATA_LEN>>`,其中 `std::array` 是一个固定长度的数组容器,它可以作为 `vector` 的元素类型。例如:
```c++
#include <vector>
#include <array>
typedef uint8_t u8;
const int DATA_LEN = 10;
int main() {
std::vector<std::array<u8, DATA_LEN>> vecRecvBuff;
vecRecvBuff.resize(521);
// 使用下标访问元素
vecRecvBuff[0][0] = 0x12;
vecRecvBuff[0][1] = 0x34;
// ...
return 0;
}
```
这样定义的 `vector` 可以存储多个长度为 `DATA_LEN` 的字节数组。注意,使用 `resize` 函数时,它会默认初始化每个元素,所以每个字节数组的元素都会被初始化为 `0`。
希望这可以解决你的问题。
阅读全文