小编Vla*_*adp的帖子

C/C++全局与静态全局

可能重复:
静态与全局

我对全局变量和静态全局变量之间的差异感到困惑.如果static表示此变量仅对同一文件是全局的,那么为什么在两个不同的文件中同名会导致名称冲突?

有人可以解释一下吗?

c c++ static global-variables

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

为什么c ++ std :: max_element这么慢?

我需要找到向量中的max元素,所以我正在使用std::max_element,但我发现它是一个非常慢的函数,所以我编写了自己的版本并设法获得x3更好的性能,这里是代码:

#include <string>
#include <iostream>
#include <vector>
#include <algorithm>

#include <sys/time.h>

double getRealTime()
{
    struct timeval tv;
    gettimeofday(&tv, 0);
    return (double) tv.tv_sec + 1.0e-6 * (double) tv.tv_usec;
}

inline int my_max_element(const std::vector<int> &vec, int size)
{
    auto it = vec.begin();
    int max = *it++;
    for (; it != vec.end(); it++)
    {
        if (*it > max)
        {
            max = *it;
        }
    }
    return max;
}

int main()
{
    const int size = 1 << 20;
    std::vector<int> vec;
    for (int …
Run Code Online (Sandbox Code Playgroud)

c++ gcc iterator vector max

36
推荐指数
2
解决办法
4762
查看次数

unordered_map哈希函数c ++

我需要像这样定义一个unordered_map unordered_map<pair<int, int>, *Foo>,定义和传递一个hashequal函数到这个地图的语法是什么?

我试过传递给它这个对象:

class pairHash{
public:
    long operator()(const pair<int, int> &k) const{
        return k.first * 100 + k.second;
    }
};
Run Code Online (Sandbox Code Playgroud)

没有运气:

unordered_map<pair<int, int>, int> map = unordered_map<pair<int, int>, int>(1,
*(new pairHash()));
Run Code Online (Sandbox Code Playgroud)

我不知道是什么size_type_Buskets意思所以我给了它1.做正确的方法是什么?谢谢.

c++ unordered-map hash-function

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

Eclipse文本突出显示

在日食时我按'ctrl'(无论下一步是什么)我的部分代码变成了黄色背景的红色.这是什么以及如何禁用它?

此外,当这发生'ctrl'+'space'停止工作,直到我重新启动eclipse.

这看起来像这样:

在此输入图像描述

编辑:

如何重现:在已编写的内容上启动自动完成(ctrl + space):

class.fun

步骤后.,开始自动complition

现在每次按住ctrl,都会发fun黄光:

类.开玩笑

java eclipse syntax-highlighting editor

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

双&amp;符号返回类型是什么意思?

我偶然发现了这样的语法:

int&& move(int&& x)
{
    return x;
}
Run Code Online (Sandbox Code Playgroud)

据说这就是std::move函数的实现方式,但我不太明白返回类型 (&&) 的实际含义。

我用谷歌搜索了一下,但没有找到答案,有人可以向我解释一下吗?

编辑:

我的大部分困惑来自于函数的返回已经是右值的事实,所以我不明白 && 可以在那里改变什么..不确定我是否有意义。

c++ move ampersand c++11

8
推荐指数
1
解决办法
8308
查看次数

C++类类型作为参数

如果我有一个接口和许多实现此接口的类,我现在可以仅作为参数传递类的类型而不是对象吗?

这样的事情:

Interface *creatClass(class : Interface){
    return new class();
}
Run Code Online (Sandbox Code Playgroud)

编辑:

template <class T>
IFrame *creatClass(){
    return new T();
}

void dfg(){
    IFrame *lol = creatClass<Button>();
}

error C3206: 'creatClass' : invalid template argument for 'Dist_Frame', missing template argument list on class template 'Button'
Run Code Online (Sandbox Code Playgroud)

PS. Button继承IFrame

c++ arguments interface class

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

Web applet游戏设计

我在java中制作网页游戏,每次进入GUI设计时都遇到麻烦,通常我会查看其他代码并复制大部分设计,而我无法决定应该使用哪种设计.我使用了Applet,Canvas,JFrame.我需要的是在不同游戏之间切换的主循环和绘图功能.那么我应该使用哪个类和哪个设计,哪个更好,为什么,可能链接到有用的教程和示例...请解释你的建议.谢谢.

java applet web-applications

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

c ++ const转换

可能重复:
为什么转换(指向非const的指针)到指向const的指针是合法的

我有一个功能:

bool isCirclePolygonIntersection(const Point*, const int*, const Point*,
                                 const Point**, const int*);
Run Code Online (Sandbox Code Playgroud)

我试着这样称呼它:

isCirclePolygonIntersection(p, &r, poly_coord, poly, &poly_size)
Run Code Online (Sandbox Code Playgroud)

在这里poly定义如下:

Point** poly = new Point*[poly_size];
Run Code Online (Sandbox Code Playgroud)

当我尝试编译时出现编译器错误:

error C2664: 'isCirclePolygonIntersection' : cannot convert parameter 4 from 'Point **' to 'const Point **'
1>          Conversion loses qualifiers
Run Code Online (Sandbox Code Playgroud)

从我所学到的是,const当一个函数需要一个非const参数时,你不能给函数赋予参数,否则就没问题了.有谁知道这是什么问题?谢谢.

c++ compiler-construction casting const

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

OpenGL glRotate 和 glTranslate 顺序

我正在尝试围绕轴旋转一个立方体,我正在做的是:

    glTranslatef(0.0f, 0.0f, -60.0f);
    glRotatef(angle, 0.0f, 1.0f, 0.0f);
Run Code Online (Sandbox Code Playgroud)

我期望它移动到 -60 并围绕 y 轴旋转,但它只是在 -60 坐标处围绕它自己旋转。当我这样写时:

    glRotatef(angle, 0.0f, 1.0f, 0.0f);
    glTranslatef(0.0f, 0.0f, -60.0f);
Run Code Online (Sandbox Code Playgroud)

我得到了我需要的东西,但我不明白为什么?他们为什么要反其道而行之?有人可以解释一下。

opengl translation rotation matrix

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

迭代计数器不递增

我用c ++编写了一个程序来打印所有素数高达100,但它只是写入"hello world",然后挂起.这是为什么?

#include <iostream>

bool is_prime(int num)
{
    if(num == 1)
    {
        return false;
    }
    for(int i = 2; i < num; i++)
    {
        if(num % i == 0)
        {
            return false;
        }
    }
    return true;
}

int increase(int i)
{
    return i++;
}

int main()
{
    std::cout << "hello world!!" << std::endl;
    int i = 1;
    while(i < 100)
    {
        i = increase(i);
        if(is_prime(i))
        {
            std::cout << i << " is prime" << std::endl;
        }
    } …
Run Code Online (Sandbox Code Playgroud)

c++

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