小编ela*_*lad的帖子

c ++复制构造函数-除了一个字段之外的所有字段的隐式复制?

假设我有一个包含许多字段的类,和/或不断变化(在开发中),并且它的所有字段要么是本地的,要么是不必要的 POD 类型,它们提供了令人满意的复制构造函数,但是一个- 甚至可能有删除或私有化其复制构造函数,但为我提供了根据需要进行复制的方法。
现在假设我需要它有自己的复制构造函数。
我是否必须通过字段副本编写详尽的(令人筋疲力尽的)字段,或者是否有更干净,更少暴露于错误的方法来实现相同的目标?

插图代码:

class Big {
public :
  Big(Big const & big) : ? { ? }
protected :
  int i1, i2, ... , i50;
  float f1, f2, ... , f50;
  CopyConstructableClass1 c1;
  CopyConstructableClass2 c2;
  ...
  CopyConstructableClass20 c20;
  NonCopyConstructableClass ncc;
};
Run Code Online (Sandbox Code Playgroud)

谢谢

c++ copy-constructor

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

GNU并行-使输出保持彩色

我正在并行处理一些带有彩色输出的0-args命令(脚本/任何命令),但是当并行打印输出时,它是无色的(除非我使用该-u选项,但是它是无序的)。

有办法改变吗?

我正在使用的行(插图):

echo "script1 script2 script3" | tr " " "\n" | parallel -j3 'echo {}":\n\n"; eval {}'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我使用的是GNU parallel的本地版本,但是应该大致相同。

谢谢

colors gnu-parallel

5
推荐指数
1
解决办法
536
查看次数

为什么像'rectangle'和'line'这样的绘图命令会忽略'hold off'?

我试图在循环中显示一个变化的矩形,有暂停,它忽略了hold off(实际上它假定为默认值).

这是一个简化版的代码:

clc; close all; clear all;

rect = [10 10 20 30];

figure
axis([0 200 0 50]);

for i = 1 : 15
    rect(1) = rect(1) + i;
    rectangle('Position', rect, 'edgeColor', [1 0 0]);
    hold off;
    pause(0.2);
end
Run Code Online (Sandbox Code Playgroud)

这是故意的吗?我错过了什么吗?除了在每次迭代后将其绘制为白色之外,我还能做些什么来使之前的矩形消失?

谢谢..

编辑:

非常简化的版本已经解决,但是如果我想在同一个图上绘制另一个东西,另一个图则忽略了延迟.在这种情况下我该怎么办?

再次感谢.

clc; close all; clear all;

rect = [10 10 20 30];

figure
axis([0 200 0 50]);

h1 = [];
for i = 1 : 15
    rect(1) = rect(1) + i;
    delete(h1);
    h1 = rectangle('Position', rect, …
Run Code Online (Sandbox Code Playgroud)

matlab plot matlab-figure

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

c ++在家庭制作的矢量容器中放置新的

这里有一些问题非常相似,但它们无法帮我理解它.另外,我给出了一个完整的示例代码,因此其他人可能更容易理解.

我已经制作了一个矢量容器(由于内存原因不能使用stl),以前只使用operator = for push_back*,一旦我来到新的位置,我决定向它引入一个额外的"emplace_back"**.

*(T :: operator =预计会处理内存管理)

**(这个名字取自我之后遇到的std :: vector中的类似函数,我给它的原始名称是一团糟).

我读了一些关于使用new new over operator new []的危险的东西,但是无法弄清楚以下是否正常,如果没有,它有什么问题,我该怎么替换它,所以我'我很感激你的帮助.

这是一个简化的代码,没有迭代器,也没有扩展功能,但它指出了这一点:

template <class T>
class myVector {
public :
    myVector(int capacity_) {
        _capacity = capacity_;
        _data = new T[_capacity];
        _size = 0;
    }

    ~myVector() {
        delete[] _data;
    }

    bool push_back(T const & t) {
        if (_size >= _capacity) { return false; }
        _data[_size++] = t;
        return true;
    }

    template <class... Args>
    bool emplace_back(Args const & ... args) {
        if (_size >= _capacity) …
Run Code Online (Sandbox Code Playgroud)

c++ placement-new

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