标签: c++

除了允许变量被const函数修改之外,'mutable'关键字是否有任何其他用途?

前段时间我遇到了一些用mutable关键字标记类的成员变量的代码.据我所知,它只是允许您修改const方法中的变量:

class Foo  
{  
private:  
    mutable bool done_;  
public:  
    void doSomething() const { ...; done_ = true; }  
};
Run Code Online (Sandbox Code Playgroud)

这是这个关键字的唯一用途,还是有更多的东西比它的眼睛?我已经在一个类中使用了这个技术,标记为一个boost::mutex可变的允许const函数为了线程安全的原因锁定它,但是,说实话,这感觉有点像黑客.

c++ mutable keyword

511
推荐指数
12
解决办法
21万
查看次数

迭代器失效规则

C++容器的迭代器失效规则是什么?

优选地以摘要列表格式.

(注意:这是Stack Overflow的C++常见问题解答的一个条目.如果你想批评在这种形式下提供常见问题解答的想法,那么发布所有这些的元数据的发布将是这样做的地方.这个问题在C++聊天室中受到监控,其中FAQ的想法一开始就出现了,所以你的答案很可能被那些提出想法的人阅读.)

c++ iterator c++-faq c++11 c++17

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

508
推荐指数
8
解决办法
5万
查看次数

*.h或*.hpp用于您的类定义

我总是使用一个*.h文件作为我的类定义,但在阅读了一些boost库代码后,我意识到它们都在使用*.hpp.我一直厌恶那个文件扩展名,我想主要是因为我不习惯它.

使用*.hpp过的优点和缺点是*.h什么?

c++ header

506
推荐指数
14
解决办法
25万
查看次数

499
推荐指数
5
解决办法
53万
查看次数

函数声明结尾的"const"是什么意思?

可能重复:
C++方法声明中"const"的含义是什么?

我有一本书,里面写着:

class Foo 
{
public:
    int Bar(int random_arg) const
    {
        // code
    }
};
Run Code Online (Sandbox Code Playgroud)

这是什么意思?

c++ const

498
推荐指数
6
解决办法
44万
查看次数

如何使用new在C++中声明二维数组?

如何使用new声明二维数组?

就像,对于"普通"数组,我会:

int* ary = new int[Size]
Run Code Online (Sandbox Code Playgroud)

int** ary = new int[sizeY][sizeX]
Run Code Online (Sandbox Code Playgroud)

a)不工作/编译和b)没有完成什么:

int ary[sizeY][sizeX] 
Run Code Online (Sandbox Code Playgroud)

确实.

c++ arrays multidimensional-array dynamic-allocation

496
推荐指数
14
解决办法
87万
查看次数

如何找到阵列的长度?

有没有办法找到一个数组有多少个值?检测我是否已到达阵列的末尾也可以.

c++ arrays

496
推荐指数
15
解决办法
130万
查看次数

浮动和双重比较最有效的方法是什么?

比较两个double或两个float值的最有效方法是什么?

简单地这样做是不正确的:

bool CompareDoubles1 (double A, double B)
{
   return A == B;
}
Run Code Online (Sandbox Code Playgroud)

但是像这样:

bool CompareDoubles2 (double A, double B) 
{
   diff = A - B;
   return (diff < EPSILON) && (-diff < EPSILON);
}
Run Code Online (Sandbox Code Playgroud)

似乎浪费处理.

有谁知道更聪明的浮动比较器?

c++ algorithm floating-point optimization

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

从Python调用C/C++?

构建Python绑定到C或C++库的最快方法是什么?

(如果这很重要,我正在使用Windows.)

c c++ python

493
推荐指数
16
解决办法
39万
查看次数