【发布时间】:2023-04-07 19:25:01
【问题描述】:
如何将 std::vector 转换为 std::tuple ? 我有
class T { };
int cnt = 3;
vector<T*> tv;
for (int i = 0; i < cnt; ++i) {
tv.push_back(new T());
}
我想得到
auto tp = std::tie(*tv[0], *tv[1], *tv[2]);
我怎样才能得到这个 tp ? 如果cnt足够大,我不能手动写这个tp。
std::vector<
ConvConnection<
decltype(inputLayer),
decltype(*C1[0]),
decltype(*Conn1Opt[0]),
RandomInitialization<arma::mat>,
arma::mat
>* > Conn1(6);
for (size_t i = 0; i < 6; ++i) {
Conn1.push_back(new ConvConnection<
decltype(inputLayer),
decltype(*C1[0]),
decltype(*Conn1Opt[0]),
RandomInitialization<arma::mat>,
arma::mat
>(inputLayer, *C1[i], *Conn1Opt[i], 5, 5));
}
这是代码。这里只有 6 个,但我还需要一些大小超过 100 的向量。我需要将此向量转换为元组。
【问题讨论】:
-
如果手动编写太大或太麻烦,请编写另一个程序生成它。如果你想在运行时确定元组的大小,你不能。
-
为什么需要一个元组?
std::array<T*,MAX>不行吗? -
一个离题的挑剔:你真的应该有更好的变量/类名。没有理由
cnt不能写成count。什么是ConvConnection?Conn1Opt?在 2015 年,您的源文件仍然可以放入您的硬盘驱动器中,其中包含一些额外的字符,其他查看您的代码的开发人员稍后会感谢您:)