1

我正在尝试获取数组和向量的交集。我决定将它们都设为向量,因为 cplusplus.com 就是这样举个例子的。

这是我收到的错误消息:

在此处输入图像描述

这是我的代码:

在此处输入图像描述

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

编辑

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

在此处输入图像描述

4

1 回答 1

3

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

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;
}
于 2014-01-10T19:55:42.903 回答