小编fog*_*bit的帖子

SSE整数除法?

浮点值除法有_mm_div_ps,整数乘法有_mm_mullo_epi16.但是有什么整数除法(16位值)?我怎么进行这种划分?

c++ sse

18
推荐指数
2
解决办法
8751
查看次数

并发递增int变量

求职面试的问题

int count = 0;

void func1()
{
  for ( int i =0 ; i < 10; ++i )
    count = count + 1;
}

void func2()
{
  for ( int i =0 ; i < 10; ++i )
    count++;
}

void func3()
{
  for ( int i =0 ; i < 10; ++i )
    ++count;
}

int main()
{
  thread(func1);
  thread(func2);
  thread(func3);

  //joining all the threads

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

问题是:count理论上可能采用的价值范围是多少?上限显然是30,但是较低的是什么?他们告诉我它10,但我不确定.否则,为什么我们需要记忆障碍?

那么,范围的下限是多少?

c++ concurrency

14
推荐指数
2
解决办法
1198
查看次数

sizeof of template class

template<int N>
struct S
{
    void foo()
    {
        sizeof( S ); // (*)
        sizeof( S<N> );
    }
};

int main()
{
    S<5> s;
    s.foo();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这段代码编译得很好(VS2010),但我对(*)字符串有疑问.S是不完整的类型,不像S<N>在我看来那么编译器怎么知道它的大小?标准对这种情况说了什么,它是否形成良好sizeof

c++ templates sizeof

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

std :: function - >函数指针

这是一个代码:

#include <functional>
using namespace std::tr1;

typedef void(*fp)(void);

void foo(void)
{

}

void f(fp)
{

}

int main()
{
  function<void(void)> fun = foo;
  f(fun); // error
  f(foo); // ok
}
Run Code Online (Sandbox Code Playgroud)

最初我需要从非静态类方法创建一个函数指针,因为我需要在函数调用之间保存数据.我试过std::tr1::bindboost::bind,但他们返回功能对象,不是指针,正如我所看到的,不能被"铸造"纯功能性的指针.虽然函数signature(SetupIterateCabinet)需要一个纯粹的func指针.

我需要建议如何解决问题.谢谢.

c++ bind functor

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

std :: find在遗留阵列上

我怎样才能进行std::find的传统阵列上没有作出新的std::vector/ std::array从现有的传统阵列

例如:

int ar[N];

if ( std::find(ar, ar + N, value) != &ar[N] ){ /**/ }
Run Code Online (Sandbox Code Playgroud)

&ar[N]没有找到任何内容时检查情况是否有效?我可以肯定我正确使用&ar[N]像模拟一样std::vector::end()吗?

c++ stl

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

c ++ static_cast和引用

struct A{};
struct B : A{};

int main()
{
    A a;
    A& a_ref = a;

    static_cast<B>(a); // *1
    static_cast<B&>(a_ref); // *2

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

(*1)产生错误,我理解为什么.(*2)编译好,但为什么?并且,只要它编译并假设B包含一些属性,如果我a_ref转换B&然后尝试访问属性怎么办?我想我会遇到运行时错误.

所以,正如我所看到的,有一种情况会导致崩溃并且没有办法避免崩溃,这与dynamic_cast人们可以检查转换为null的结果或将代码放在某个try-catch区域中的情况不同.我如何处理这种情况,我需要投射参考,并确保我真正得到正确的参考.

c++ static-cast

11
推荐指数
3
解决办法
1万
查看次数

const数组与函数中的静态const数组

例如,有一个功能做某事.我应该如何在函数内声明和定义一个数组,我只想分配/初始化一次?

void someclass::somefunction(/*parameters here*/)
{
  static const my_array[4] = {1,2,3,4}; // #1
  /*or just*/
  const my_array[4] = {1,2,3,4}; // #2
}
Run Code Online (Sandbox Code Playgroud)

据我所知,#1"my_array"将在数据段中分配,并在第一次"somefunction"调用时初始化一次.但是我的一位同事假设案例#2以相同的方式工作,并且不需要编写"静态"关键字.

所以我想问一下,标准是关于案例#1和#2的说法,如果确实如此,究竟是什么?我该如何定义这种类型的数组,以确保它只被分配/初始化一次?

谢谢.

c++ arrays static const

10
推荐指数
2
解决办法
4573
查看次数

glPopAttrib和GL_INVALID_OPERATION

我正在研究一些图形应用程序,我得到了一个GL_INVALID_OPERATIONglPopAttrib().预测答案"看起来你glPopAttrib()glBegin/glEnd街区内打电话"请看我用GLIntercept做的这个日志.

/* tons of wglGetProcAddress* */
wglGetProcAddress("glEndOcclusionQueryNV")=087C9B10 
wglGetProcAddress("glBeginTransformFeedbackN...")=087C9ED0 
wglGetProcAddress("glEndTransformFeedbackNV")=087C9F00 
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib() glGetError() = GL_INVALID_OPERATION # <---- THIS
glPopAttrib()
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPushAttrib(GL_POINT_BIT | GL_LINE_BIT | GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib()
glPopAttrib()
glPushAttrib(GL_VIEWPORT_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPushAttrib(GL_COLOR_BUFFER_BIT)
glPopAttrib()
glPopAttrib()
glPopAttrib()
/* and so on */
Run Code Online (Sandbox Code Playgroud)

glBegin/glEnd在导致错误之前不会进行任何调用glPopAttrib().(我使用findstr commad来过滤日志).

该错误仅出现一次,在代码执行期间不再出现此类(或其他)错误.我有一种怀疑,我应该先调用一些函数glPushAttrib(GL_VIEWPORT_BIT)或之前的东西.

c++ windows opengl

10
推荐指数
1
解决办法
870
查看次数

input()vs sys.stdin.read()

import sys
s1 = input()
s2 = sys.stdin.read(1)

#type "s" for example

s1 == "s" #False
s2 == "s" #True
Run Code Online (Sandbox Code Playgroud)

为什么?我怎样才能input()正常工作?我试图编码/解码s1,但它不起作用.

谢谢.

python input python-3.x python-3.2

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

在"if"语句中创建COM智能指针时出错C2275

为什么我不能

if (IUnknownPtr p = anotherComPtr) {} //error C2275: 'IUnknownPtr' : illegal use of this type as an expression
Run Code Online (Sandbox Code Playgroud)

虽然我可以

if (int* a = anotherPointer) {}
Run Code Online (Sandbox Code Playgroud)

IUnknownPtr是通过定义_COM_SMARTPTR_TYPEDEF(IUnknown, __uuidof(IUnknown))(像我使用的任何其他智能指针)

如何在if语句中创建com smartptr 并验证它是否有效?谢谢.

我使用VS 2008

ps这不是关于编码的好方法,而是关于error C2275.

c++ com smart-pointers

5
推荐指数
1
解决办法
677
查看次数