小编Ale*_*tov的帖子

为什么?1> sizeof(int)?

请考虑以下代码:

template<bool> class StaticAssert;
template<> class StaticAssert<true> {};
StaticAssert< (-1 < sizeof(int)) > xyz1; // Compile error
StaticAssert< (-1 > sizeof(int)) > xyz2; // OK
Run Code Online (Sandbox Code Playgroud)

为什么是-1 > sizeof(int)真的?

  1. -1提升到unsigned(-1)那时是真的吗unsigned(-1) > sizeof(int)
  2. 这是真的,-1 > sizeof(int)相当于-1 > size_t(4)如果的sizeof(int)的是4,如果是这样的话,为什么-1 > size_t(4)是假的?

这个C++标准是否合适?

c++ unsigned sizeof type-conversion modular

17
推荐指数
2
解决办法
1990
查看次数

C++中的LP Simplex算法

我需要单纯形算法的强大C++源代码(是一种用于线性规划问题的数值解法的流行算法).

请不要链接到维基百科.我需要C++中的良好源代码,使用模板,清晰的用户友好名称,并且工作得很好.

优选地,算法必须检查不稳定的浮点计算.

c++ algorithm linear-programming

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

如何在LaTeX中的文本下方/上方书写?

我希望文本上面有文本(不是上标 - x^2),但是上面有文字\overbrace和文字.(同下文)

谢谢

latex tex

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

我无法访问指向成员的指针.为什么?

请考虑以下代码:

template<class T, class F>           struct X {};
template<class T, class F, T F::* m> struct Y {};

struct Foo {
    int member;
    typedef X<int, Foo>               x_type; // works well
    typedef Y<int, Foo, &Foo::member> y_type; // ERROR
};

typedef Y<int, Foo, &Foo::member> y_type2; // OK
Run Code Online (Sandbox Code Playgroud)

为什么编译器会生成错误?(VS2008)


我已将此错误发布到connect.microsoft.com.

c++ templates pointer-to-member

8
推荐指数
2
解决办法
571
查看次数

如何减少模板参数?

在这里,我有以下类型的仿函数:

template<class T, class Foo, T Foo::*p>
struct X {
    void operator()(Foo & f) {
        (f.*p) = 12 * (f.*p);   // simple example. could be more complex `operator()`
    }

};
Run Code Online (Sandbox Code Playgroud)

和示例结构:

struct FF
{
    int m;
    int r;
};
Run Code Online (Sandbox Code Playgroud)

我想使用仿函数X,但我不想显式指定模板参数,如下所示:

void testforx()
{
    std::vector<FF> cont(5);
    std::for_each(cont.begin(), cont.end(), X<int, FF, &FF::r>() );  // it work, but I don't want to write `int` and `FF`
    std::for_each(cont.begin(), cont.end(), createx<&FF::r>() );     // how I would like to use it, how to declare `createx` function? …
Run Code Online (Sandbox Code Playgroud)

c++ templates

7
推荐指数
1
解决办法
623
查看次数

什么案例更好?

我有一个清单MyClass:

struct MyClass {
     bool is_old_result(int lifetime);
};
std::list<MyClass> results;
int lifetime = 50; // or something else
Run Code Online (Sandbox Code Playgroud)

什么情况下删除更好(c ++设计和性能):

results.remove_if(
    std::bind2nd(std::mem_fun_ref(&MyClass::is_old_result), lifetime));
Run Code Online (Sandbox Code Playgroud)

要么

results.remove_if(boost::bind(&MyClass::is_old_result, _1, lifetime));
Run Code Online (Sandbox Code Playgroud)

要么

struct RemoveFunctor {
   RemoveFunctor (int lifetime) : lifetime(lifetime) {}
   bool operator()(const MyClass & m) { return m.is_old_result(lifetime); }
private:
   int lifetime;
};
results.remove_if(RemoveFunctor(lifetime));
Run Code Online (Sandbox Code Playgroud)

为什么?

PS请,没有lambda函数,没有C++ 0x.

c++ performance stl language-design functor

7
推荐指数
1
解决办法
249
查看次数

如何在编译时保存指向成员的指针?

请考虑以下代码

template<typename T, int N>
struct A {
  typedef T value_type; // OK. save T to value_type
  static const int size = N; // OK. save N to size
};
Run Code Online (Sandbox Code Playgroud)

看,如果此参数是typename或整数值,则可以保存任何模板参数.问题是指向成员的指针是一个偏移量,即整数.现在我想在编译时保存任何指向成员的指针:

struct Foo {
   int m; 
   int r;
};

template<int Foo::*ptr_to_member>
struct B {
   // Next statement DOES NOT WORK!
   static int Foo::* const saved_ptr_to_member = ptr_to_member; 
};

// Example of using
int main() {
    typedef B<&Foo::m> Bm;
    typedef B<&Foo::r> Br;
    Foo foo;
    std::cout << (foo.*(Bm::saved_ptr_to_member));
}
Run Code Online (Sandbox Code Playgroud)

如何在 …

c++ templates pointer-to-member

6
推荐指数
1
解决办法
1297
查看次数

转换tex源,以便所有宏都被其定义替换

是否可以看到TeX'预处理器'的输出,i.即 在实际输出完成之前的中间步骤,但是所有用户定义的宏都被替换,只剩下一部分TeX原语?

或者没有这样的中间步骤?

latex tex

6
推荐指数
2
解决办法
1472
查看次数

如何优化循环?

我有以下瓶颈功能.

typedef unsigned char byte;
void CompareArrays(const byte * p1Start, const byte * p1End, const byte * p2, byte * p3)
{
     const byte b1 = 128-30;
     const byte b2 = 128+30;
     for (const byte * p1 = p1Start; p1 != p1End; ++p1, ++p2, ++p3) {
        *p3 = (*p1 < *p2 ) ? b1 : b2;
    }
}
Run Code Online (Sandbox Code Playgroud)

我想C++用SSE2内部函数替换代码.我试过_mm_cmpgt_epi8但它使用了签名比较.我需要无符号比较.

是否有任何技巧(SSE,SSE2,SSSE3)来解决我的问题?

注意: 在这种情况下,我不想使用多线程.

c++ optimization assembly intrinsics sse2

6
推荐指数
1
解决办法
1278
查看次数

如何测试B类是否来自模板族类

如何在编译时测试B类是否来自std :: vector?

template<class A>
struct is_derived_from_vector {
  static const bool value = ????;
};
Run Code Online (Sandbox Code Playgroud)

如何在编译时测试B类是否来自模板系列?

template<class A, template< class > class Family>
struct is_derived_from_template {
  static const bool value = ????;
};
Run Code Online (Sandbox Code Playgroud)

使用:

template<class T> struct X {};

struct A : X<int> {}
struct B : std::vector<char> {}
struct D : X<D> {}

int main() {
   std::cout << is_derived_from_template<A, X>::value << std::endl; // true
   std::cout << is_derived_from_template<D, X>::value << std::endl; // true
   std::cout << is_derived_from_vector<A>::value << std::endl; // false …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae type-traits c++03

6
推荐指数
1
解决办法
1394
查看次数