gpt4 book ai didi

不同通用类型的 C++ 数组

转载 作者:行者123 更新时间:2023-11-30 01:44:32 25 4
gpt4 key购买 nike

考虑这段代码:

template<typename T>
void doSomething(std::vector<T> arr) {
for (auto i = 0; i < arr.size(); ++i)
std::cout << arr[i] << std::endl;
}

int main()
{
doSomething(std::vector<int> { 1, 5, 7 });
}

在这个例子中,模板被经常使用。一个由三个整数组成的数组被传递给一个函数,该函数的参数是一个类型为 T 的数组。的,一般类型。然后指定它们的类型为 int这里:std::vector<int> { 1, 5, 7 } .

我想做的是初始化 std::vector包含三种不同的类型。像这样:

doSomething(std::vector<T> { 1, "Hi", 2.7f });

这里没有指定类型,std::vector不仅包含整数。有没有办法做这样的事情?谢谢!

最佳答案

std::vector 无法做到这一点。模板参数是唯一的。

检查 std::tuple可以做你想做的。

std::tuple<int, std::string, float>

如果你需要更多的通用性,你将不得不做这样的事情:

template<typename U, typename V, typename W>
void doSomething(std::tuple<U,V,W> t) { ... }

如果你想要一个包含任意数量元素的元组,那么你必须使用可变参数模板:

template<typename... Ts>
void doSomething(std::tuple<Ts...> data) {
// ...
}

关于不同通用类型的 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com