![]() |
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 @谢谢你的编辑。 |
![]() |
Tony Hellmuth · 求矩阵中最大连通区域的大小 7 年前 |
![]() |
Rxzlion · Python-回溯迷宫生成递归函数理解 7 年前 |
![]() |
Salmaan P · 在python中优化DFS 7 年前 |
![]() |
ssharma · 平衡二叉树上预序和DFS的时间复杂度相同吗? 7 年前 |
![]() |
101ldaniels · DFS发现和完成时间 8 年前 |
![]() |
Ankit Mishra · 图与BFS和DFS树的等价性 9 年前 |
![]() |
MJM · 使用DFS计算Java中5x5场地上可能的骑士移动 9 年前 |