|
|
1
8
首先让我们看看showMatrix。此函数的目的是输出矩阵的内容。需要复印件吗?不,它需要改变矩阵中的任何东西吗?不,它的目的只是展示它。因此,我们希望通过常量引用传递矩阵。
现在让我们看看getMatrixFromFile:
在这里按值返回SquareMatrix可能代价高昂(这取决于编译器是否对这种情况应用了返回值优化),按值传入字符串也是如此。使用C++ 0x,我们有RValk引用来实现它,因此我们不必返回一个副本(我也通过与SkMatkMatt相同的原因修改了const引用传递的字符串,我们不需要文件名的副本):
但是,如果您没有具有这些功能的编译器,那么一种常见的折衷方法是通过引用传入矩阵,并让函数填充它:
这并没有为客户机提供方便的语法(现在他们必须编写两行代码而不是一行代码),但它始终避免了深度复制开销。还有 MOJO
|
|
|
2
2
收件人:
从技术上讲,这是通过
另一方面,我可能会改变这一点:
例如:
同样地:
将变成:
(…这看起来可以避免
就2D矩阵而言,除非需要不规则矩阵(不同的行可以有不同的长度),否则通常使用简单的前端来处理单个向量中的索引:
请注意,这使用
|
|
|
3
1
引用和指针是密切相关的。这两种方法都是传递参数,而不将参数值复制到子例程的堆栈帧上。
更让人困惑的是,据我所知,两者之间的编译器实现基本相同。
想象一下这个功能
int main(){ 内景a; 参考(a); }
两者都提供了一种无需复制即可传递参数的机制。在您的函数中(顺便说一下,您不需要声明):
同样,出于同样的原因(为了避免参数的副本),请使用:
一个棘手的部分是,你可能会想:“嘿,一个参考意味着没有副本!我要一直用它!我要返回函数的引用!”这就是你的程序崩溃的地方。
不幸的是,这个坏了!什么时候?
|
|
|
4
1
我不会要求你在第一次尝试中包括所有C++结构,但逐渐地不要让自己陷入抑郁状态。Vector是最常用的STL容器。容器的使用取决于你的需要,而不是一个一个地使用。 http://msdn.microsoft.com/en-us/library/1fe2x6kt%28VS.80%29.aspx @谢谢你的编辑。 |
|
|
Kris · 有没有办法获得可变结构字段的“引用” 4 年前 |
|
|
Jora Karyan · IF语句未按预期引发错误 4 年前 |
|
|
nedzad · 如何访问引用Firebase中其他对象的对象 8 年前 |
|
|
Empha · 从成员函数对对象所做的更改不会持续。范围/参考问题? 8 年前 |