打印传递给打印函数的向量[关闭]

Posted

技术标签:

【中文标题】打印传递给打印函数的向量[关闭]【英文标题】:Printing a Vector that was passed to a print function [closed] 【发布时间】:2018-10-02 15:09:02 【问题描述】:

This is the code that I have written

我在尝试打印向量值时遇到错误,我不知道为什么。 我将数组传递给函数print(&v1)。 有人可以帮我弄清楚为什么会发生这个错误,以及是否有更好的替代方法来打印出我的函数中的向量元素。

【问题讨论】:

请在问题中包含代码和错误作为文本。另请阅读minimal reproducible example 您对指针引用有一些误解。我认为这不是一个尝试教授的好地方,您应该选择good book,或者请您的老师再次解释这些概念。 您问题的简单答案是将print 中的v[x] 更改为(*v)[x],但我认为这对您的理解没有太大帮助。 (这是一种修复方法,但可能不是最好的修复方法)。 print1 似乎是正确的。为什么要在print 中使用指针?与一些老师试图让你相信的相比,你需要的指点要少得多。 vector<int> *v -> vector<int> & v 【参考方案1】:

您在print1 中正确使用了-> 而不是.(就像在print 中一样)来操作指向向量的指针。这是因为x->y 等价于(*x).y,这意味着您在访问它之前正确地取消了指向向量的指针。

[] 除外。在这里,您还必须在使用[] 之前取消引用指针。所以:

cout << (*v)[x] << endl;

(*x)[] 没有像 (*x).y 那样的缩写(也称为“语法糖”),因此您必须手动完成。


错误消息令人困惑,因为在 指针 上使用 [] 是有效的 - x[y] 等效于 *(x+y),这意味着您正在执行指针算术:您使用 v 作为如果它是一个(C 风格的)向量数组,并且您尝试从这个向量数组中获取 xth 元素。幸运的是,编译器不知道如何将 &lt;&lt;Vectorcout 联系起来 - 但如果可以,代码将编译并执行您(可能)不打算执行的操作。

【讨论】:

以上是关于打印传递给打印函数的向量[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

无法从构造函数中将数组值传递给向量

传递给函数时找不到c ++向量?

更新的矢量元素不打印

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?

我的Android进阶之旅如何传递android的log日志打印方法给到底层算法c代码去调用?