相关疑难解决方法(0)

在C++ 11或C++ 1y中排序非类型模板参数包?

在C++ 11和/或C++中:

假设我给出了一个带有非类型参数包的模板:

template<int...>
void f();
Run Code Online (Sandbox Code Playgroud)

我正在编写另一个将实例化它的模板:

template<int... x>
void g()
{
    ???

    f<???>();
}
Run Code Online (Sandbox Code Playgroud)

我希望g以排序顺序用x实例化f.

那是:

g<4,7,2,9,3,7>();
Run Code Online (Sandbox Code Playgroud)

应致电:

f<2,3,4,7,7,9>();
Run Code Online (Sandbox Code Playgroud)

可以这样做吗?如果是这样,最有效的方法是什么(由常数因素决定)?

c++ templates c++11 c++14

13
推荐指数
3
解决办法
2641
查看次数

什么是C ++ 17中的constexpr容器?

我想创建一个类,其方法类似于std::map,但应在编译时进行排序。哪些constexpr容器适合存储键template<class K>和值template<class V>

std :: vector不满足这些要求。

UPD:我们发现std::array有很多constexpr方法。这足以解决我的问题std::array<std::pair<K, V> >。但是问题仍然存在。

c++ templates constexpr

4
推荐指数
1
解决办法
1723
查看次数

用选择算法编译时间递归排序

是否可以使用选择算法在c ++中编写编译时递归排序函数?

我想按升序将数组x从元素排序istart到元素iend.数组xN元素.输入数组中的数据x仅在运行时才知道,因此数据只能在运行时进行排序.但是,我想生成C++代码,即sort_asc()在编译时对所有递归函数调用.此外,我想在CUDA设备功能中使用此代码.由于CUDA是C++的一个子集,只有少数扩展,我认为这是一个正确的问题.不幸的是,我不认为CUDA支持constexpr关键字,Boost和STL都不支持.

我想出了以下代码,用于按升序排序.

// sort in ascending order.
template< int istart, int N, int iend, int iend_min_istart >
inline void sort_asc
(
    float *x
)
{
    int   min_idx = istart;
    float min_val = x[ min_idx ];
    #pragma unroll
    for( int i=istart+1; i<N; i++ ){
        if( x[ i ] < min_val ){
            min_idx = i;
            min_val = x[ i ];
        }
    }
    swap( x[ …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

2
推荐指数
1
解决办法
1560
查看次数

标签 统计

c++ ×3

c++11 ×2

templates ×2

c++14 ×1

constexpr ×1