【问题标题】:Passing an STL queue as parameter to another function in C++将 STL 队列作为参数传递给 C++ 中的另一个函数
【发布时间】:2020-12-12 03:32:06
【问题描述】:

我在将队列作为参数传递给 C++ 中的函数时遇到一些问题 我定义了一个 STL 队列queue<int> example[100];

我定义了一个函数void calculateSum(queue<int> &example, int size){}

我正在尝试通过编写 calculateSum(example, 100) 将队列传递给此函数,但我一直收到错误消息 [cquery] no matching function for call to 'minimumDistance'

我该怎么办?任何反馈都会有所帮助

【问题讨论】:

  • 那么calculateSum 究竟应该做什么?如果它应该作用于queues 数组,则需要更改其签名以接受一个,而不是采用单个queue 和一个大小参数。
  • 当错误信息将minimumDistance 命名为问题时,为什么您怀疑问题出在calculateSum(example, 100) 行? (该行似乎确实有错误,但不是您引用的那个。)

标签: c++ function data-structures stl fifo


【解决方案1】:

您的声明 queue<int> example[100]; 生成一个包含 100 个队列的数组。

你可能想要的只是queue<int> example;,然后让它随着你添加元素而增长。

【讨论】:

  • 我实际上想要一个包含 100 个队列的数组
  • 你可能想试试 vector> 。在处理复杂对象时,我发现向量比数组更容易使用。
【解决方案2】:

queue<int> example[100]; 将创建一个队列数组(名为example)。您的函数void calculateSum(queue<int> &example, int size) 接受对单个 int 队列(不是队列数组)的引用。

假设您确实想要一个队列数组,并且您确实希望该函数只接受对单个队列的引用,您必须从数组中选择一个队列来传递给它。例如,您可以通过 calculateSum(example[0], 123); 传入数组中的第一个队列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2017-08-07
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多