小编lez*_*lon的帖子

C++ 11中"final"关键字用于函数的目的是什么?

finalC++ 11中关键字用于函数的目的是什么?我理解它可以防止派生类的函数覆盖,但如果是这种情况,那么将你的final函数声明为非虚函数是不够的呢?还有其他我想念的东西吗?

c++ final c++11

130
推荐指数
8
解决办法
9万
查看次数

什么是std :: unique_ptr :: get

是不是首先std::unique_ptr::get打败了unique_ptr的目的?我本来期望这个函数改变它的状态,所以它不再有指针.是否有实际有用的std :: unique_ptr :: get?

c++ pointers unique-ptr c++11

55
推荐指数
4
解决办法
3万
查看次数

解决错误的一般方法:变量'x'周围的堆栈已损坏

我有一个程序在调试中提示我VS2010中的错误:

Error: Stack around the variable 'x' was corrupted
Run Code Online (Sandbox Code Playgroud)

这给了我可能发生堆栈溢出的功能,但我无法直观地看到问题所在.

有没有通用的方法来调试VS2010的这个错误?是否可以识别哪个写操作正在覆盖错误的堆栈内存?谢谢

c++ debugging visual-studio-2010

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

C++代码依赖/调用图"查看器"?

有没有(免费)工具可以显示给定函数中所有函数调用的图形?例如,如果我在一个复杂的函数fun()上使用它我试图理解,它会向我展示fun()按顺序调用的所有函数,然后我就有可能看到函数的相同内容由fun()调用,依此类推.我正在为C++代码寻找这个.这样的事情甚至存在吗?

编辑:我正在使用VS 2008,如果这有帮助,但我认为这样的软件无论如何都可以在源文件上工作

c++ refactoring

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

operator <比较多个字段

我有以下运算符<应该首先按值排序,然后按另一个值排序:

    inline bool operator < (const obj& a, const obj& b) 
    {
        if(a.field1< b.field1)
            return true;
        else
            return a.field2 < b.field2;
    }
Run Code Online (Sandbox Code Playgroud)

我觉得这是不正确的,如果没有对成员变量进行另一次第三次比较测试,你就不能这样做,但我找不到任何不起作用的例子.那么这真的和预期的一样吗?谢谢

编辑:我会把它编码为:

    inline bool operator < (const obj& a, const obj& b) 
    {
        if(a.field1< b.field1)
            return true;
                    else if(a.field1> b.field1)
            return false;
        else
            return a.field2 < b.field2;
    }
Run Code Online (Sandbox Code Playgroud)

有什么不同吗?我问,因为我知道我的经验是正确的,但也比第一个更长

c++ lexicographic comparison-operators

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

快速稀疏矩阵乘法

对于类,我必须为稀疏矩阵编写自己的线性方程求解器.我可以自由地为稀疏矩阵使用任何类型的数据结构,我必须实现几个解,包括共轭渐变.

我想知道是否有一种着名的方法来存储稀疏矩阵,使得与向量的乘法相对较快.

现在我的稀疏矩阵基本上实现了一个包装std::map< std::pair<int, int>, double>,用于存储数据(如果有的话).这将矩阵与向量的乘法转换为O(n²)复杂度到O(n²log(n)),因为我必须对每个矩阵元素进行查找.我查看了耶鲁稀疏矩阵格式,似乎元素的检索也在O(log(n))中,所以我不确定它是否会更快.

作为参考,我有一个800x800矩阵,填充了5000个条目.使用共轭梯度法大约需要450秒来解决这样的系统.

您认为使用其他数据结构可以更快地完成吗?

谢谢!

c++ matrix linear-algebra sparse-matrix matrix-multiplication

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

找到重叠的矩形算法

假设我有一组巨大的非重叠矩形和整数坐标,它们一劳永逸地固定

我有另一个矩形A,其整数坐标的坐标正在移动(但你可以假设它的大小是常数)

查找哪些矩形与A交叉(或内部)的最有效方法是什么?我不能简单地遍历我的设置,因为它太大了.谢谢

编辑:矩形都与轴平行

c++ algorithm computational-geometry

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

获取给定其地址的std :: vector元素的索引

假设我有一个std :: vector,我通过某种方式获得了第n个元素的地址.给定我的std :: vector的基地址,是否有一种简单的方法(比迭代迭代更快)来获得元素出现的索引?让我们假设我确定元素在向量中.

c++ stl stdvector

9
推荐指数
2
解决办法
6144
查看次数

这个C++示例是可移植的吗?

下面的这个问题,我试图复制粘贴发现的例子在这里在VS2010:

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

struct S
{
    int number;
    char name;

    S ( int number, char name  )
        : number ( number ), name ( name )
    {}

    // only the number is relevant with this comparison
    bool operator< ( const S& s ) const
    {
        return number < s.number;
    }
};

struct Comp
{
    bool operator() ( const S& s, int i )
    {
        return s.number < i;
    }

    bool operator() ( …
Run Code Online (Sandbox Code Playgroud)

c++ stl visual-studio-2010

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

多态在没有指针/引用的情况下在C++中工作吗?

可能重复:
虚函数对象切片

让我们考虑一下:

#include <vector>
#include <iostream>
using namespace std;

struct A {
    virtual void do_it() { cout << "A" << endl; } 
};

struct B : public A {
    virtual void do_it()  { cout << "B" << endl; } 
};

int main() {
    vector<A> v;
    v.push_back(B());
    v[0].do_it(); // output is A
}
Run Code Online (Sandbox Code Playgroud)

哪个功能会被调用?如果不存在切片,基本上可以使用不带指针的多态性吗?

c++ object-slicing

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