2

For a class assignment I had to rewrite this code using vectors instead of arrays. I figured I would use the existing arrays and assign them as a vector. But I get:

error: cannot convert 'std::vector' to 'int*' for argument '1' to 'bool testPIN(int*, int*, int)'

How can I get around this error?

#include <iostream>
#include<vector>

using namespace std;

// Function Prototype

bool testPIN(int [], int [], int);

int main ()
{
    const int NUM_DIGITS = 7; // Number of digits in a PIN

    int cpin1[NUM_DIGITS] = {2, 4, 1, 8, 7, 9, 0}; // Base set of values.
    int cpin2[NUM_DIGITS] = {2, 4, 6, 8, 7, 9, 0}; 
    int cpin3[NUM_DIGITS] = {1, 2, 3, 4, 5, 6, 7}; 

    vector<int> pin1(cpin1, cpin1+7) ;
    vector<int> pin2(cpin2, cpin2+7) ;
    vector<int> pin3(cpin3, cpin3+7) ;

    if (testPIN(pin1, pin2, NUM_DIGITS))
        cout << "ERROR: pin1 and pin2 report to be the same.\n";

    else
        cout << "SUCCESS: pin1 and pin2 are different.\n";

    if (testPIN(pin1, pin3, NUM_DIGITS))
        cout << "ERROR: pin1 and pin3 report to be the same.\n";

    else
        cout << "SUCCESS: pin1 and pin3 are different.\n";

    if (testPIN(pin1, pin1, NUM_DIGITS))
        cout << "SUCCESS: pin1 and pin1 report to be the same.\n";

    else
        cout << "ERROR: pin1 and pin1 report to be different.\n";

    return 0;

}



bool testPIN(int custPIN[], int databasePIN[], int size)
{................}
Vic
  • 33
  • 1
  • 5

2 Answers2

5

In these situations, it helps to read a good reference. You would need to get the vector's underlying data array:

testPIN(pin1.data(), pin2.data(), NUM_DIGITS))

If your implementation does not support C++11, you can do the following:

testPIN(&pin1[0], &pin2[0], NUM_DIGITS))

But if you have been asked to re-implement some code to use vectors, you may want to re-implement the testPIN function instead:

bool testPIN(const std::vector<int>& custPIN1,
             const std::vector<int>& custPIN2);

and then just pass the vectors:

testPIN(pin1, pin2);
juanchopanza
  • 223,364
  • 34
  • 402
  • 480
1
testPIN(&pin1[0], &pin2[0], NUM_DIGITS)

because the vector's internal memory structure is same with array.

Please check this.

How to convert vector to array in C++

Community
  • 1
  • 1
Joy Hyuk Lee
  • 756
  • 11
  • 22