小编use*_*020的帖子

检查两个数字是否有不同符号的简单方法?

我有两个浮点数ab.我想检查一下是否有不同的标志.简单的方法是看

bool b = a * b < 0;
Run Code Online (Sandbox Code Playgroud)

但这两个数字非常小,a*b可能会下溢.还有其他简单的检查方法吗?

任何人认为这是一个重复的问题,请给我一个完全符合条件的答案a * b < 0.请注意,在我的问题中,0的符号未定义.

c++ math sign

13
推荐指数
1
解决办法
1617
查看次数

如何使大括号初始化和默认值一起工作?

以下代码有效

class A
{
public:
    int i;
    float f;
};


int main()
{
    A a{ 1, 0.1 };
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是,如果我为A的成员添加默认值,则它不起作用

class A
{
public:
    int i = 0;
    float f = 3.14;
};
Run Code Online (Sandbox Code Playgroud)

如何让两者一起工作?

c++ initialization

12
推荐指数
1
解决办法
164
查看次数

什么是boost :: variant内存和性能成本?

boost :: variant似乎是一个操纵异构类型集的强大容器.我想知道它的成本.在内存中,我认为它占用了最大类型的大小加上一个表示哪个()的整数.对于apply_visitor(),我认为它的性能非常好,它可以直接调用除了很多ifs之外的函数.我的观点是对的吗?

c++ boost variant

12
推荐指数
1
解决办法
4209
查看次数

是(auto&a:a)语法正确吗?

例如,我定义了一个多维数组

array<array<array<int, 3>, 4>, 5> a;
Run Code Online (Sandbox Code Playgroud)

我循环它

for (auto& a : a) 
    for (auto& a : a)
        for (auto& a : a) 
            a = 1;
Run Code Online (Sandbox Code Playgroud)

这是正确的语法吗?我在VS2015中测试过.没有编译错误.

c++ arrays for-loop

12
推荐指数
2
解决办法
827
查看次数

如何在QFormLayout中隐藏一行后删除剩余间距

通过以下代码隐藏行

field.hide()
formLayout.labelForField(field).hide()
Run Code Online (Sandbox Code Playgroud)

上述的一个缺点是,当行中的项目被隐藏时,行的上方和下方的间隔保持不变,也就是说,隐藏行上方和下方的行看起来比布局中的其余项目进一步分开.如何在QFormLayout中隐藏一行后删除剩余间距?

layout qt

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

获取元组元素类型的索引?

如果我有一个元组类型不同的元组

std::tuple<T0, T1, T2, ...>
Run Code Online (Sandbox Code Playgroud)

以及如何获取元素类型的索引?

template<class T, class Tuple>
struct Index
{
    enum {value = ?;}
};
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ templates tuples

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

如何使用显式模板实例化来减少编译时间?

它建议使用显式模板实例化来减少编译时间.我想知道该怎么做.例如

// a.h
template<typename T> class A {...};
template class A<int>; // explicit template instantiation  to reduce compilation time
Run Code Online (Sandbox Code Playgroud)

但是在包含啊的每个翻译单元中,似乎A<int>都会被编译.编译时间不会减少.如何使用显式模板实例化来减少编译时间?

c++ templates compilation

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

如何在Qt中重置模型?

我正在使用Qt模型/视图框架.当我重置模型中的数据时,我必须重置模型以使视图也更新.怎么做?我modelReset(QPrivateSignal);在QAbstractItemModel中找到了一个信号,这是解决它的方法吗?如何发出信号?谢谢.

qt model-view

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

如何解决功能模板的局部特化?

例如,我有一个班级:

class A
{
    enum {N = 5};
    double mVariable;

    template<class T, int i>
    void f(T& t)
    {
        g(mVariable); // call some function using mVariable.
        f<T, i+1>(t); // go to next loop
    }

    template<class T>
    void f<T, N>(T& t)
    {} // stop loop when hit N.
};
Run Code Online (Sandbox Code Playgroud)

功能模板中不允许部分特化.在我的情况下,我该如何解决这个问题?

我略微改变了Arne Mertz的例子,如:

template<int n>
struct A
{
    enum {N = n};
    ...
};
Run Code Online (Sandbox Code Playgroud)

并使用A像:

A<5> a;
Run Code Online (Sandbox Code Playgroud)

我无法在Visual Studio 2012上编译.它是编译器错误还是其他什么?这很奇怪.

编辑:检查.这是一个Visual Studio错误.:(

我认为Nim提供了实现它的最简单方法.

c++ templates template-specialization

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

是否可以输入参数包?

是否可以输入参数包?例如

template<class T, class... Args>
struct A
{
    typedef T Type; // We typedef it, then its derived class can use it.
                    // How about for parameter packs?

    // Option 1:
    typedef Args Arguments;

    // Option 2:
    using Arguments = Args;

    // Option 3: I can put in a tuple, but how can I untuple it to a pack
    typedef tuple<Args...> Tuple;
};
Run Code Online (Sandbox Code Playgroud)

我想使用上述技术来实现以下功能

template<int... VALUES>
struct IntegralSequence
{
    enum { SIZE = sizeof...(VALUES) };

    template <unsigned I>
    struct At …
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates c++11

9
推荐指数
1
解决办法
5629
查看次数