复制开销:双精度与指针
overhead of copying: doubles vs pointers
复制两个双精度的开销可能很明显,但通常更少 比一对指针强加的
从C++郎
。有人可以解释一下吗?
这是Stroustrup的"C++编程语言"的第11章。
让我们在上下文中看一下报价:
我们定义了
complex
运算符来获取类型complex
参数。这意味着每次使用complex
运算符,都会复制每个操作数。复制两个doubles
的开销可能很明显,但通常小于一对指针所施加的开销(通过指针访问可能相对昂贵)。遗憾的是,并非所有类都有方便的小表示形式。为了避免过度复制,可以声明函数来获取引用参数。例如:
class Matrix {
double m[4][4];
public:
Matrix();
friend Matrix operator+(const Matrix&, const Matrix&);
friend Matrix operator*(const Matrix&, const Matrix&);
};
他的意思是,由于complex
很小,因此按值传递它是可以接受的,而不是通过const
引用。但是,对于较大的类型(如上面的Matrix
),这是不可接受的。对于此类类型,通过const
引用传递是首选方法,因为它将避免复制整个矩阵。
相关文章:
- 将指针数组分配给双精度
- f 是指向函数的指针,该函数采用 int,并返回指向不带任何内容并返回双精度的函数的指针
- C++ 在具有数组成员的类上无效指针/双精度释放
- 为什么可以使用指针创建新结构,但不能以相同的方式创建双精度?
- 将 Int 指针分配给双精度变量
- 错误:类型"类特征::张量<双精度,3>"参数提供给"删除",预期指针
- 如何将双精度转换为浮点指针
- Xcode 错误:指针和双精度之间的比较
- 复制开销:双精度与指针
- 对双精度和指针对的向量进行排序
- 函数中指向静态双精度的指针数组C++
- 将字符指针强制转换为双精度数组/取消引用
- 地图和unordered_map包含指向双精度的指针
- 用于双精度和指针C++的容器
- c++sizeof运算符-指向双精度的指针
- 通过指针初始化常量矩阵<双精度,0,80>(来自 Dlib)
- 转换/解析指针字符串和双精度
- 为什么我不能将一个类型(比如双精度)的变量的地址分配给 int 类型的指针?
- 使用双精度数组时,指针算术
- 如何正确地删除双精度数组通过指针后,指针已被迭代