我有两个元组,每个元组包含不同类型的容器。
std::tuple<containerA<typesA>...> tupleA;
std::tuple<containerB<typesB>...> tupleB;
因此,以一个示例来说明,
tupleA
可以这样定义:std::tuple<list<int>, list<float>> tupleA;
这两个容器,containerA
和containerB
是不同类型的。 typesA
和 typesB
不相交。我想按它们的大小对元组中的容器进行排序,并能够通过它们的类型访问它们。所以,举个例子:
std::tuple<list<int>, list<float>> tupleA {{2}, {3.3f, 4.2f}};
std::tuple<deque<double>, deque<uint8_t>> tupleB {{2.0, 1.2, 4.4}, {}};
auto sortedArray = sort(tupleA, tupleB);
sortedArray == {deque<uint8_t>, list<int>, list<float>, deque<double>};
sortedArray.get<list<float>>() == {3.3f, 4.2f};
std::get<list<int>>(tupleA).push_back(4);
std::get<list<int>>(tupleA).push_back(5);
std::get<list<int>>(tupleA).push_back(6);
sortedArray = sort(tupleA, tupleB);
sortedArray == {deque<uint8_t>, list<float>, deque<double>, list<int>};
最重要的部分是我必须存储
sortedArray
,而元组中元素的大小可能会改变。我无法创建这样的sort
函数。访问sortedArray
的实际语法并不重要。我尝试使用容器数据的朴素索引来访问
sortedArray
内部的信息,例如使用std::pair<A, 1>
来引用元组A中的第二个元素,但是我无法通过它访问元组的信息,因为它不是constexpr。
std::sort
еҜ№е…ғз»„иҝӣиЎҢжҺ’еәҸпјҢеӣ дёәе®ғ们зҡ„йЎәеәҸжҳҜдёҚеҸҜеҸҳзҡ„гҖӮиҝҷж ·еҒҡдјҡеҲӣе»әдёҖдёӘж–°зұ»еһӢгҖӮ - user975989tuple
的排序,而是我创建的sortedArray
的排序。这个sortedArray
可以是一个vector
或者任何你需要的类型。 - user975989