相关疑难解决方法(0)

实现C++ 14 make_integer_sequence

我尝试实现C++ 14别名模板make_integer_sequence,这简化了类模板的创建integer_sequence.

template< class T, T... I> struct integer_sequence
{
    typedef T value_type;
    static constexpr size_t size() noexcept { return sizeof...(I) ; }

};

template< class T, T N>
using make_integer_sequence = integer_sequence< T, 0,1,2, ... ,N-1 >; // only for illustration.
Run Code Online (Sandbox Code Playgroud)

为了实现,make_integer_sequence我们需要一个辅助结构make_helper.

template< class T , class N >
using make_integer_sequence = typename make_helper<T,N>::type;
Run Code Online (Sandbox Code Playgroud)

实施make_helper并不太难.

template< class T, T N, T... I >
struct make_helper
{
   typedef …
Run Code Online (Sandbox Code Playgroud)

c++ gcc c++11 c++14

47
推荐指数
3
解决办法
2万
查看次数

结构化绑定取代std :: tie滥用

在阅读这篇关于c ++ 17最终特性的摘要时,我对结构化绑定(强调我的)部分感到有些惊讶:

结构化绑定

到目前为止,有一种已知的技巧滥用std :: tie直接将元组或对分配给不同的变量,而不必手动处理结果类型.这是一个hack,并且变量必须存在,现在你可以声明变量并在一行中初始化它们:

auto [a,b,c] = getvalues();

需要大括号,getvalues返回一个元组.提案中没有提到std :: pair,因此不清楚它是否适用于在某些插入方法中由STL返回的pair.

我假设他们提到了这种用法 std::tie

int a,b,c;
std::tie(a,b,c) = std::make_tuple(1,2,3);
Run Code Online (Sandbox Code Playgroud)

我认为这是一种推荐的做法.

有人可以解释为什么他们将上述例子称为黑客攻击吗?

c++ stdtuple c++17 structured-bindings

7
推荐指数
3
解决办法
2001
查看次数

将minmax_element与min_element和max_element一起使用是否有效率优势?

std::minmax_element :返回一对由迭代器组成的对,作为第一个元素的最小元素和作为第二个元素的最大元素的迭代器.

std::min_element :将迭代器返回到[first,last]范围内的最小元素.

std::max_element :将迭代器返回到[first,last]范围内的最大元素.


是否std::minmax_element使用完整列表的排序来实现这一目标?

被处理的开销恢复对来自std::minmax_element足够值得?

c++ max min

5
推荐指数
3
解决办法
1531
查看次数

标签 统计

c++ ×3

c++11 ×1

c++14 ×1

c++17 ×1

gcc ×1

max ×1

min ×1

stdtuple ×1

structured-bindings ×1