【发布时间】:2021-03-17 18:58:38
【问题描述】:
我不明白需要说明什么。请解释您的疑虑。 从我的角度来看,我提出了一个与所解决的技术领域相符的问题,我解释了我的困惑,我给出了一个说明我的问题的例子,我已经详细说明了收到的诊断信息。这个问题的受访者充分详细地理解了我的问题、示例和诊断信息,因此他们能够做出适当的回应并纠正我的错误和误解。通过什么方式可以使这个对话通过适当的问题变得更加尖锐?
@Ruzihm 表示没有列表,我想在我的示例中。我想解释一下为什么这种说法是错误的。几年前有一个 LIFO 堆栈和一个 FIFO 堆栈。我们将 LIFO 堆栈称为“堆栈”,将 FIFO 堆栈称为“队列”。在英国,排在前面的队伍,例如剧院票房是一个队列,而中国男人在蒙古征服中国后所戴的辫子也是一个队列。这一切都取决于上下文。
没有“列表”的抱怨可能源于没有<list> 对象的实例化的概念。但是这样的对象更恰当地称为链表,链表的链表称为图,参见例如Gnu gSlip 文档。没有涉及明确的链表。
在 C/C++ 中,可以形成一个非矩形的多维数组。此类对象在历史上被称为“列表列表”,而不是“数组数组”。原因很清楚,'list' 是一个包含项目的对象,用编程术语来说,可以通过索引访问,如 list[index]。这并不是说链表,a.k.a., <list> 也不是“链表”,但通常的约定更明确地表明 <list> 是链表。
如果问题改为“数组数组”,那么这些示例就没有什么意义了。在类似于使用<list> 的术语中,没有<array> 的。因此,任何对使用“列表列表”的批评都会被保留并与使用“数组数组”相关。如果一个不合适,另一个也是。
给出的答案,即使用向量的向量,是准确的,并且正确地回答了有关列表列表的问题。如有关向量的文档中所述,例如在https://cpluscplus.com 上,向量是一个列表,其中元素可以通过索引访问。在这种情况下,向量的向量是特定的列表列表,更具体地说,是锯齿状列表的列表,而不是必须是矩形的数组的数组。
我认为,任何声明发布示例以解释我在形成列表时的困惑是不恰当的,这表明对软件实践和行话的一些误解。问题形成正确,示例正确解决了问题。
如果此问题被删除,或以其他方式无法访问,则您支持有关该问题的格式错误的陈述。我希望不要这样做。
MSVS 16.9.1
我创建了一个字符串列表。我很难获得列表列表的大小或列表中字符串数组的大小。我收到相互矛盾的错误消息,我不知道如何解决它们。
# include <string>
using namespace std;
static const string x[3] = { "a", "b", "c" };
static const string y[] = { "a", "b", "c" };
static const string* z[] = { x, y };
int xSize = x->size();
int ySize = y->size();
int zSize = z.size(); // expression must have class type
int zpSize = z->size(); // expression must have pointer-to-class type
int xzSize = z[0]->size();
int yzSize = z[1]->size();
错误描述为:
C++ 中的表达式必须具有类类型错误上次更新时间:2021 年 1 月 14 日表达式必须具有类类型是当点 (.) 运算符用于访问对象的属性时引发的错误,用于指向对象。
还有:
好吧,我们有一个问题。我的 MSVS 使用 bing 进行网络搜索以寻找答案,但没有一个答案像上面的那样尖锐。要点是对象必须是指针,但不是。
结果是 zpSize 和 zSize 都不起作用,并且给出的错误是矛盾的。我被难住了。
【问题讨论】:
-
此问题中没有任何列表...
-
最好不要猜测它是如何工作的。 C 数组没有成员
size() -
另外,当您调用
x->size()和y->size()时,您正在对数组的第一个元素调用string::size函数。z是一个指针数组,它不是类,不能隐式转换为类,因此 expression must have class type 错误。它也不是指向类的指针,也不能隐式转换为指向类的指针,因此 expression must have pointer-to-class type 错误。 -
您可以使用
std::extent找出数组的大小,但使用std::array通常更容易。 -
您不能将数组用作容器项。看这里有一些解释stackoverflow.com/questions/826935/…