我找不到任何关于这个具体案例的信息,想知道这是否可能。
我想从 unordered_set 的元素(元组)中创建一个新的向量向量。为此,我在构造函数中使用了 lambda 函数。
struct hashFunction {
size_t operator()(const tuple<int, int, int>& x) const {
return get<0>(x) ^ get<1>(x) ^ get<2>(x); // Could be something else
}
};
int main() {
unordered_set<tuple<int, int, int>, hashFunction> mySet = {{1, 2, 3},
{4, 5, 6},
{7, 8, 9}};
vector<vector<int>> myVector(mySet.begin(), mySet.end(), [](const tuple<int, int, int>& curTuple) {
return vector<int>{get<0>(curTuple), get<1>(curTuple), get<2>(curTuple)};
});
return 0;
}
但我明白:
no matching constructor for initialization of 'vector<vector<int>>'
不,
std::vector
没有这样的构造函数。您可以使用 std::transform
代替:
std::vector<std::vector<int>> myVector;
std::transform(mySet.begin(), mySet.end(), std::back_inserter(myVector),
[](const std::tuple<int, int, int>& curTuple) {
return vector<int>{std::get<0>(curTuple),
std::get<1>(curTuple),
std::get<2>(curTuple)};
});