vector指定容器长度
时间: 2023-11-25 17:08:41 浏览: 70
vector是一个可变长度的容器,它可以根据需要动态调整其大小。你可以通过指定初始容量来创建一个vector,但不能直接指定容器的长度。
例如,要创建一个初始大小为10的vector,你可以使用以下代码:
```cpp
#include <vector>
int main() {
std::vector<int> myVector(10); // 创建一个初始大小为10的vector
return 0;
}
```
上述代码创建了一个包含10个整数的vector。当你向其中添加更多的元素时,vector会自动调整其大小以适应新元素的添加。
相关问题
vector容器at
`std::vector` 是 C++ 标准库中的动态数组,它提供了一种动态大小的线性表数据结构。`at()` 是 `vector` 类的一个成员函数,用于访问指定索引位置的元素,这个函数在访问过程中会进行严格的越界检查。
当你调用 `vector<T>::at(size_t index)` 时,它会返回索引 `index` 对应的元素值。如果索引 `index` 超出了向量的实际范围(即小于0或大于等于向量长度),`at()` 函数将抛出 `std::out_of_range` 异常,表示试图访问不存在的位置。
例如:
```cpp
std::vector<int> vec = {1, 2, 3};
int value = vec.at(1); // 正确,获取第二个元素,value为2
try {
int invalid = vec.at(5); // 错误,向量只有三个元素,会抛异常
} catch (const std::out_of_range& e) {
std::cout << "Index out of range: " << e.what() << '\n';
}
```
vector容器sort排序自定义
`std::vector`容器在C++ STL中默认使用快速排序(QuickSort)进行元素排序,但是如果你想按照自定义的比较规则对元素进行排序,你可以通过提供一个自定义的`compare`函数或者直接利用lambda表达式来实现。
1. 自定义函数排序:你需要定义一个函数模板,该函数接受两个类型的元素作为输入,并返回一个布尔值表示它们的相对顺序。例如:
```cpp
bool myCompare(const MyType& a, const MyType& b) {
// 根据你的需求编写比较逻辑,如按年龄、字符串长度等
return a.age < b.age;
}
// 然后在排序时指定这个函数
std::sort(your_vector.begin(), your_vector.end(), myCompare);
```
2. Lambda表达式排序:如果你的排序逻辑比较简单,可以使用lambda表达式来替代自定义函数。例如:
```cpp
your_vector.sort([](const MyType& a, const MyType& b) { return a.age < b.age; });
```
这里假设`MyType`是一个拥有`age`成员变量的类。
阅读全文