我正在尝试使用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字节块上对齐.使用英特尔编译器,它没有.
有人能指出我正确的方向吗?
我第一次尝试std :: enable_if并且正在努力.任何指导将不胜感激.
作为一个玩具示例,这里是一个简单的静态向量类,我想为其定义一个复制构造函数,但行为取决于向量的相对大小:
所以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) 我正在尝试将 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)
这表示对象“.” 未找到。