繁体   English   中英

调试断言失败 - 数组迭代器不兼容

[英]Debug Assertion Failed - Array Iterators Incompatible

我试图得到一个数组和一个向量的交集。 我决定让它们成为两个向量,因为它是cplusplus.com给出一个例子的方式。

这是我收到的错误消息:

在此输入图像描述

这是我的代码:

在此输入图像描述

getNumbers()函数返回一个数组。

编辑

这是getNumbers()函数 - 它只返回相同返回类型的属性:

在此输入图像描述

这个断言通常意味着作为范围的开头和结尾提供的迭代器引用不同的集合。

getNumbers()函数返回一个数组。

除非getNumbers()通过引用返回一个数组,并且还返回对同一数组的引用,否则此初始化无效:

std::vector<unsigned int> ticketNumbers(getNumbers().begin(), getNumbers().end());

为了使上述工作正常, getNumbers()必须重复返回对同一数组的引用。 getNumbers返回一个副本,因为它按值返回一个数组。

要修复此行,首先调用getNumbers() ,将结果存储在临时变量tempNumbers ,如下所示

std::array<unsigned int, TICKET_BALL_COUNT> tempNumbers= getNumbers();
std::vector<unsigned int> ticketNumbers(tempNumbers.begin(), tempNumbers.end());

或者,您可以更改getNumbers()函数以返回const引用,如下所示:

const std::array<unsigned int, TICKET_BALL_COUNT>& Ticket::getNumbers() const {
    return _numbers;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM