是否有make_vector这样一个函数
时间: 2024-03-09 08:45:59 浏览: 13
C++标准库中并没有提供 `make_vector` 这样的函数,但是我们可以自己实现一个类似的函数来创建 vector。
以下是一个示例的 `make_vector` 实现,它可以根据输入的参数列表创建一个 vector 对象:
```c++
#include <iostream>
#include <vector>
template<typename... T>
auto make_vector(T&&... args) {
return std::vector<std::common_type_t<T...>>{std::forward<T>(args)...};
}
int main() {
// 示例:创建一个 vector 对象
auto vec = make_vector(1, 2, 3, 4, 5);
for (auto& x : vec) std::cout << x << " ";
std::cout << std::endl;
return 0;
}
```
在上述代码中,`make_vector` 函数使用了可变参数模板和类型推导来实现,可以接受任意数量和类型的参数。由于输入参数的类型可能不同,因此在返回 vector 对象时需要使用 `std::common_type_t` 来获取它们的公共类型。需要注意的是,`make_vector` 函数返回的 vector 对象是一个局部对象,如果需要在函数外部使用,可以使用引用或者移动语义来获取它。