小编jma*_*erx的帖子

多个线程调用相同的函数是否安全?

例如,安全吗:

void AddTwo(int &num)
{
  num +=2;
}


void ThreadProc(lpvoid arg)
{
AddTwo((int)arg);

}
Run Code Online (Sandbox Code Playgroud)

如果4个线程同时执行此操作会发生这种情况吗?谢谢

c c++ multithreading

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

事件监听器如何工作?

他们是否反复检查条件并在条件满足时执行.例如,操作系统如何确切地知道何时插入USB设备,或者MSN如何确切地知道您何时收到电子邮件.这是如何运作的?

谢谢

c c++ events

18
推荐指数
1
解决办法
7079
查看次数

像GTA IV这样的游戏如何不会破坏堆?

我对GTA IV等游戏可能使用的内存管理类型感兴趣,因为它需要非常快速地创建和删除大量对象.如何避免碎片堆和其他东西.如果有人能指出我正确的方向,我真的很感激.

c++ heap memory-management

18
推荐指数
4
解决办法
2633
查看次数

将小数(2.75)转换为时间(2:45)

如果我有一个2.75的双倍,那么在.Net中有一种方法可以将其格式化为'2:45'

如果是例如2.75555555555,则应将其四舍五入到最接近的分钟.我不介意自己编码,但我想知道.Net是否可以.我检查了ToString,但没有找到任何东西.

谢谢

.net c#

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

3点之间的角度?

给定点ABC,我怎么能找到角度ABC?我正在为矢量绘图应用程序制作一个手工工具,并尽量减少它产生的点数,除非鼠标位置和最后2个点的角度大于某个阈值,否则我不会添加点.谢谢

我有什么:

int CGlEngineFunctions::GetAngleABC( POINTFLOAT a, POINTFLOAT b, POINTFLOAT c )
{
    POINTFLOAT ab;
    POINTFLOAT ac;

    ab.x = b.x - a.x;
    ab.y = b.y - a.y;

    ac.x = b.x - c.x;
    ac.y = b.y - c.y;

    float dotabac = (ab.x * ab.y + ac.x * ac.y);
    float lenab = sqrt(ab.x * ab.x + ab.y * ab.y);
    float lenac = sqrt(ac.x * ac.x + ac.y * ac.y);

    float dacos = dotabac / lenab / lenac;

    float rslt = acos(dacos);
    float rs …
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm trigonometry

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

C++相当于"超级"?

在Java中,不使用范围运算符,而是使用ex:

C++ -> GenericBase::SomeVirtualFunction();
Java -> super.someVirtualMethod();
Run Code Online (Sandbox Code Playgroud)

在C++中是否有这样的东西,或者由于多重继承,这在C++中是否有意义?

谢谢

c++

17
推荐指数
4
解决办法
7万
查看次数

我暴露了太多的迭代器吗?

我的班级可以有孩子,所以我需要暴露迭代器.render类需要反向迭代它们,这就是我有反向迭代器的原因.但有没有办法减少这些因为它似乎很多:

std::vector<AguiWidget*>::iterator          getChildBeginIterator();
std::vector<AguiWidget*>::reverse_iterator  getChildRBeginIterator();
std::vector<AguiWidget*>::iterator          getChildEndIterator();
std::vector<AguiWidget*>::reverse_iterator  getChildREndIterator();

std::vector<AguiWidget*>::const_iterator            getChildBeginIterator() const;
std::vector<AguiWidget*>::const_reverse_iterator    getChildRBeginIterator() const;
std::vector<AguiWidget*>::const_iterator            getChildEndIterator() const;
std::vector<AguiWidget*>::const_reverse_iterator    getChildREndIterator() const;

std::vector<AguiWidget*>::iterator          getPrivateChildBeginIterator();
std::vector<AguiWidget*>::reverse_iterator  getPrivateChildRBeginIterator();
std::vector<AguiWidget*>::iterator          getPrivateChildEndIterator();
std::vector<AguiWidget*>::reverse_iterator  getPrivateChildREndIterator();

std::vector<AguiWidget*>::const_iterator            getPrivateChildBeginIterator() const;
std::vector<AguiWidget*>::const_reverse_iterator    getPrvateChildRBeginIterator() const;
std::vector<AguiWidget*>::const_iterator            getPrivateChildEndIterator() const;
std::vector<AguiWidget*>::const_reverse_iterator    getPrivateChildREndIterator() const;
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ iterator

17
推荐指数
1
解决办法
1002
查看次数

从std :: vector中删除多个对象?

这是我的问题,让我说我有一个带有整数的std :: vector.

让我们说它有50,90,40,90,80,60,80.

我知道我需要删除第二,第五和第三个元素.我不一定总是知道要删除的元素的顺序,也不知道有多少.问题是通过擦除元素,这会更改其他元素的索引.因此,我怎么能擦除这些并补偿索引变化.(然后排序然后用偏移线性擦除不是一个选项)

谢谢

c++ vector

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

编写一个简单的方程解析器

将使用哪种算法来实现此目的(例如,这是一个字符串,我想找到答案):

((5 + (3 + (7 * 2))) - (8 * 9)) / 72
Run Code Online (Sandbox Code Playgroud)

如果有人写到,我怎么能处理这么多嵌套的括号?

c++ algorithm parsing

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

在Linux或OSX中动态加载库?

我知道在Windows中你会做类似LoadLibrary的事情然后用GetProcAddress设置你的函数指针,

但是在Linux或OSX中会怎样做类似的事情呢?原因是我想为我的X平台应用程序开发一个插件系统.

谢谢

c++

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