161得票24回答
如何迭代遍历std::tuple的元素?

我该如何使用C++11迭代元组?我尝试了以下代码:for(int i=0; i<std::tuple_size<T...>::value; ++i) std::get<i>(my_tuple).do_sth(); 但是这样不起作用: 错误 1:抱歉,...

132得票6回答
std::pair和std::tuple在只有两个成员时的区别是什么?

std::pair 和仅包含两个成员的 std::tuple 之间有什么区别吗?(除了显而易见的 std::pair 需要恰好两个成员,而 tuple 可能有更多或更少成员…)

63得票1回答
从初始化列表初始化std::tuple

我在想元组是否可以通过初始化列表来进行初始化(更准确地说,通过初始化列表的初始化列表)?考虑到元组的定义: typedef std::tuple< std::array<short, 3>, std::array<float, ...

52得票3回答
C++ std::tuple对象的销毁顺序

在std::tuple成员销毁的顺序方面,是否有规则? 例如,如果Function1返回一个std::tuple<std::unique_ptr<ClassA>, std::unique_ptr<ClassB>>给Function2,那么我是否可以确信(当...

48得票2回答
为什么std::pair比std::tuple更快?

这里是用于测试的代码。 元组测试:using namespace std; int main(){ vector<tuple<int,int>> v; for (int var = 0; var < 100000000; ++var) {...

47得票3回答
C++20三路比较带来更多的静默行为变化

让我感到惊讶的是,我遇到了另一个问题,类似于 C++20行为破坏现有代码等于运算符?。 考虑一个简单的不区分大小写的键类型,可用于例如std::set或std::map:// Represents case insensitive keys struct CiKey : std::string...

43得票4回答
`std::make_tuple` 的原因是什么?

我是说为什么存在 std::make_tuple?我知道在某些情况下,该函数可以减少您需要键入的字符数,因为您可以避免使用模板参数。但这是唯一的原因吗?是什么使得 std::tuple 特殊,以至于存在此函数,而其他类模板没有这样的函数?这只是因为您可能更经常地在这种情况下使用 std::tu...

41得票5回答
类似STL中pair的三元组类 - 我需要自己实现吗?

我想使用一个三元组类,尽可能类似于std::pair。STL似乎没有这样的类。我不想使用太重的东西,比如Boost。是否有某个有用的FOSS非限制性许可证的三元组类可以从其他地方借鉴?我应该自己编写吗?还是应该完全做其他事情? 编辑:关于std::tuple... 真的没有三元组特定类的好...

32得票3回答
const swap()函数的目的是什么?

在实现一个自定义的tuple时(这里),我发现了一个奇怪的swap()函数,它传入了const参数(cppreference):template< class... Types > constexpr void swap( const std::tuple<Types...&...

32得票8回答
在unordered_map中使用元组

我想在我的unordered_map中使用由一个int和两个char组成的元组。我正在这样做:#include <string> #include <unordered_map> #include <cstring> #include <iostrea...