C++ 不允许我在以前工作后通过引用将 vector 传递给另一个函数

C++ Not allowing me to pass vector by reference to another function after previously working

本文关键字:vector 引用 函数 另一个 允许我 不允许 工作 C++      更新时间:2023-10-16

所以我有以下代码,它曾经工作过,但不是它刚刚开始在Visual Studio中给我一个错误。

这是我得到的编译器错误:c2664 'int partition(int [], int, int, int)':无法将参数 1 从 'std::vector>' 转换为 int []'

我用"此处错误"标记了该位置。

奇怪的是我随机开始遇到问题,它不允许我保存文件,而且它以前运行得很好。我相信我正确地复制了所有内容,如果有什么不合适的地方,请告诉我。

编辑1:添加了包含并自行测试。它只显示我尝试编译时所说的错误。

Edit2:它也开始随机坚持使用无符号的int作为我的for循环。

编辑3:代码的精简版本。我现在看到分区的原型以某种方式发生了变化。

#include <stdlib.h>
#include <iostream>
#include <time.h>
#include <vector>
#include <array>
#include <new>

//void populateArrayForward(int a[], int n);
void populateArrayForward(std::vector<int>& a);
//void algorithm4(int a[], int n, int k);
int algorithm4(std::vector<int>& a);
int partition(int a[]);
int main()
{   std::vector<int> a;
    a.resize(10);
    // Generate array
    populateArrayForward(a);
    algorithm4(a);
    char b;
    std::cin >> b;
}
int algorithm4(std::vector<int>& a)
{
    int pivotNewIndex = partition(a); // ERROR HERE
}
int partition(std::vector<int>& a)
{
}

函数 def 中的这一行:

int partition(int a[]

如果分区需要向量,则会抛出错误:

int partition(std::vector<int>& a