小编use*_*586的帖子

使用alignas语法苦苦挣扎

我正在尝试使用alignas作为类成员的指针,坦率地说,我不确定我应该把它放在哪里.

例如:

class A
{
private:
    int n;
    alignas(64) double* ptr;    

public:
    A(const int num) : n(num), ptr(new double[num])
    {}
};
Run Code Online (Sandbox Code Playgroud)

我希望能确保ptr的数据在64字节块上对齐.使用英特尔编译器,它没有.

有人能指出我正确的方向吗?

c++ icc c++11 alignas

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

enable_if with copy constructors

我第一次尝试std :: enable_if并且正在努力.任何指导将不胜感激.

作为一个玩具示例,这里是一个简单的静态向量类,我想为其定义一个复制构造函数,但行为取决于向量的相对大小:

  1. 只需将数据复制到较小或相同大小的矢量中即可
  2. 将数据复制到一个更大的向量中,然后用零填充其余的向量

所以vector类是:

template <size_t _Size>
class Vector
{
    double _data[_Size];

public:
    Vector()
    {
        std::fill(_data, _data + _Size, 0.0);
    }

    const double* data() const
    {
        return _data;
    }
...
};
Run Code Online (Sandbox Code Playgroud)

复制构造函数应该支持这样的东西,将v3的前2个元素复制到v2中:

Vector<3> v3;
Vector<2> v2(v3);
Run Code Online (Sandbox Code Playgroud)

我尝试了一个行为的复制构造函数1.像这样编译:

template <size_t _OtherSize,
    typename = typename std::enable_if_t<_Size <= _OtherSize>>
    Vector(const Vector<_OtherSize>& v) : Vector()
    {
        std::copy(v.data(), v.data() + _Size, _data);
    }
Run Code Online (Sandbox Code Playgroud)

但是编译器无法将其与行为2区分开来.即使enable_if条件是互斥的.

template <size_t _OtherSize,
    typename = typename std::enable_if_t<_OtherSize < _Size>>
    Vector(const Vector<_OtherSize>& v) : Vector()
    {
        std::copy(v.data(), v.data() + …
Run Code Online (Sandbox Code Playgroud)

c++ templates sfinae enable-if

6
推荐指数
1
解决办法
654
查看次数

如何在 ggplot 管道中使用子集?

我正在尝试将 ggplot 与子集结合使用,为 MyName 的不同值制作单独样式的线条。

如果我将数据框设置为临时变量 temp,在子集函数中引用该变量,则此方法有效

temp <- data.frame(x = ..., y = ..., MyName = ...)
temp %>% ggplot(aes(x = x, y= y) + geom_line(data = subset(temp, MyName == "Var Name"), ...)
Run Code Online (Sandbox Code Playgroud)

只是我更喜欢避免创建临时数据框。

有没有一种语法可以让我避免这种情况?类似的东西。在此,除了正确的:

data.frame(x = ..., y = ..., MyName = ...) %>%
%>% ggplot(aes(x = x, y= y) + geom_line(data = subset(., MyName == "Var Name"), ...)
Run Code Online (Sandbox Code Playgroud)

这表示对象“.” 未找到。

r ggplot2 magrittr

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

标签 统计

c++ ×2

alignas ×1

c++11 ×1

enable-if ×1

ggplot2 ×1

icc ×1

magrittr ×1

r ×1

sfinae ×1

templates ×1