如何将向量传递给函数?

Joe*_*Joe 82 c++ function vector

我正在尝试将向量作为参数发送到函数,我无法弄清楚如何使其工作.尝试了一堆不同的方法,但他们都给出了不同的错误信息.我只包含部分代码,因为只有这部分不起作用.(向量"随机"填充了0到200之间的随机但排序的值)

更新了代码:

#include <iostream>     
#include <ctime>        
#include <algorithm>    
#include <vector>       

using namespace std;

int binarySearch(int first, int last, int search4, vector<int>& random);

int main()
{
    vector<int> random(100);

    int search4, found;
    int first = 0;
    int last = 99;

    found = binarySearch(first, last, search4, random);

    system("pause");    
    return(0);      
}

int binarySearch(int first, int last, int search4, vector<int>& random)
{
    do
    {
        int mid = (first + last) / 2;  
        if (search4 > random[mid]) 
            first = mid + 1;  
        else if (search4 < random[mid]) 
            last = mid - 1; 
        else
            return mid;     
    } while (first <= last); 

    return -(first + 1);
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*Jon 126

这取决于你是否想要vector作为引用或指针传递(我忽略了通过值传递它的选项显然是不可取的).

作为参考:

int binarySearch(int first, int last, int search4, vector<int>& random);

vector<int> random(100);
// ...
found = binarySearch(first, last, search4, random);
Run Code Online (Sandbox Code Playgroud)

作为指针:

int binarySearch(int first, int last, int search4, vector<int>* random);

vector<int> random(100);
// ...
found = binarySearch(first, last, search4, &random);
Run Code Online (Sandbox Code Playgroud)

在里面binarySearch,您将需要使用.或相应->地访问成员random.

您当前代码的问题

  1. binarySearch期待一个vector<int>*,但你传入一个vector<int>(&之前缺少一个random)
  2. binarySearch在使用它之前不要取消引用内部指针(例如,random[mid]应该是(*random)[mid]
  3. 这是因为丢失using namespace std;<include>小号
  4. 分配给值firstlast是错误的(应该在0到99,而不是random[0]random[99]


Mar*_*rio 7

你必须将指针传递给向量,而不是向量本身.请注意这里的附加'&':

found = binarySearch(first, last, search4, &random);
Run Code Online (Sandbox Code Playgroud)