模<unsigned int N>是一种C++编程语言中的模板特化,它表示一个模板函数或模板类可以被特定的类型所实例化。在这个例子中,<unsigned int N>表示一个无符号整数类型的模板,其中N是一个无符号整数。这意味着,当使用这个模板时,N的值必须是一个无符号整数。这种特化可以用于实现一些特定的算法或数据结构,例如在编写图像处理算法时,可以使用无符号整数来表示像素值。
我需要知道在下面的代码中编译后,当blockSize为128时,函数实例会是什么样子。
template <unsigned int blockSize>
__global__ void reduce6(int *g_idata, int *g_odata, unsigned int n) {
extern __shared__ int sdata[];
unsigned int tid = threadIdx.x;
unsigned int i = blockIdx.x*(blockSize*2) + tid;
unsigned int gridSize = blockSize*
我在C++中实现了一个二项式系数(n选择k)函数。除了使用“普通”函数(在运行时计算),还可以使用模板元编程(当参数在编译时已知时):
template <unsigned int n, unsigned int k>
struct Binomialkoeffizient {
static const unsigned int value = Binomialkoeffizient<n, k-1>::value * (n-k+1) / k;
};
template <unsigned int n>
struct Binomialkoeffizien
我试图将位集参数传递给以下函数,但无法:
错误:没有调用搜索的匹配函数(std::bitset<100000000ul>&,int,无符号int,无符号int)
以下是代码:
#include <bitset>
#define ELEMENTS 100000000
#define TRANSITION_POINT 500
using namespace std;
template<unsigned int N>
unsigned int search(bitset<N> &array, int value, unsigne
我使用gcc 6.2 (与-std=c++14)。我有一个很大的项目,它是针对Boost 1.62构建的,没有问题。当我切换到Boost 1.64时,会得到以下错误:
.../include/boost/property_map/property_map.hpp:133:11: error: ‘template<long unsigned int Idx, class T, long unsigned int N> con
st T& std::get(const boost::array<T, N>&)’ conflicts with a p
static inline unsigned long long __cmpxchg64(unsigned long long *ptr,unsigned long long old,unsigned long long new)
{
unsigned long long oldval;
unsigned long res;
prefetchw(ptr);
__asm__ __volatile__(
"1: ldrexd %1, %H1, [%3]\n"
" teq %1, %4\n"
" teq
我有一个类A,它需要包含一个带有N元素的容器成员generators。这个N通常很小,在大多数应用程序中只有1 -- 100个对象,其中包含的成员在应用程序中大量使用。此外,N在编译时是已知的。现在,我面临着一个设计选择,即让成员成为一个数组,如 template <unsigned int N>
class A {
private:
std::array<Generators, N> generators;
public:
A() = default;
... // do something with N
}; 或者将N作为构造函
我有一个很大的类,有一群成员,我想用下面给定的特定value.The代码初始化它们,这是最天真的实现,但我不喜欢它,因为它不优雅,很难维护,因为我必须列出构造函数中的所有成员。
struct I_Dont_Like_This_Approach {
int foo;
long bar;
unsigned baz;
int a;
int b;
int c;
int d;
SomeStruct and_so_on;
/*...*/
public:
explicit I_Dont_Like_This_Approach(i
按照本文中的答案,我想在类定义之外实现函数,但我似乎找不到这个类模板的完整类型限定。
template <typename T, unsigned int N, typename = void>
class A
{
A();
public:
T* data;
};
template <typename T, unsigned int N>
class A<T, N, typename std::enable_if<N == 3 || N == 4>::type>
{
A();
public:
T data[N];
我一直收到编译警告,但我不知道如何修复它:
'%d' expects argument of type 'int', but argument 2 has type 'long unsigned int' [
程序运行得很好,但我仍然收到编译警告:
/* Sizeof.c--Program to tell byte size of the C variable */
#include <stdio.h>
int main(void) {
printf("\nA Char is %d bytes", sizeo
可能很傻的问题:我试图做以下几件事
template<unsigned int N>
class Foo{...}; // Define class Foo accordingly
int main(){
for (unsigned int i = 0; i < 10; i++){
Foo<i> f(3);
f.show();
}
return 0;
}
可以想象,它不会编译,因为变量i不是const。我知道这样做的原因是,在非类型模板参数Foo<i>中分配的值必须在编译时就知道,而且由于这里不是这样的,所以它不知道该怎么
考虑以下代码
template <typename T, T one>
T exponentiel(T val, unsigned n) {
T result = one;
unsigned i;
for(i = 0; i < n; ++i)
result = result * val;
return result;
}
int main(void) {
double d = exponentiel<double,1.0>(2.0f,3);
cout << d << e
我已经创建了一个DynamicArray类,并为它实现了一个迭代器。我的一个.cpp文件接受一个长度为n的DynamicArray,其中填充了随机值,并且应该使用STL DynamicArray对其进行排序。然而,我已经修补了几个小时,每次尝试使用begin()和end()作为参数运行排序时都会得到这个错误:
no type named 'value_type' in 'struct std::iterator_traits<DynamicArray<double>::iterator>'
我将给出我的DynamicArray原型以供参考
我正在尝试编写递归,而不是通过Y组合器引用C++中的函数名。但是,在下面的尝试中,我找不到函数的类型:
#include <iostream>
using std::cin;
using std::cout;
template<class Function> unsigned long factorial1(Function self, unsigned long n) {
return n ? n * self(self, n - 1) : 1;
}
unsigned long factorial(unsigned long n) {
retur
我想知道在编译时获得可变模板类的N参数的最简单和更常见的方法是什么(返回的值必须是编译器的静态const,以便进行一些优化)。这是我的模板类的形式:
template<unsigned int... T> MyClass
{
// Compile-time function to get the N-th value of the variadic template ?
};
非常感谢。
编辑:由于MyClass将包含200多个函数,所以我无法对其进行专门化。但我可以在MyClass内部专门化一个结构或函数。
编辑:从验证的答案导出的最终解决方案:
#include <
有人能告诉我我的密码出了什么问题吗。我猜我没有正确地重载<<,但我不知道如何修复它。
下面的代码实现一个简单的堆栈容器。它在cout << si;失败
更新:进行了建议的更改,但仍未编译。
update2:知道了!谢谢!
#include <iostream>
using namespace std;
template <typename T = int, int N = 10>
struct Stack
{
T elems[N];
unsigned int size;
Stack()
{
si