无法将向量<int>转换为 int* 用于布尔测试密码

Cannot convert vector<int> to int* for bool testPIN

本文关键字:int 用于 布尔 测试 密码 转换 lt gt 向量      更新时间:2023-10-16

对于类赋值,我不得不使用向量而不是数组重写此代码。我想我会使用现有的数组,并将它们指定为向量。但我得到了:

错误:无法将参数"1"的"std::vector"转换为"int*"'bool testPIN(int*,int*,int)'

我怎样才能避免这个错误?

#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)
{................}

在这些情况下,阅读一篇好的参考文献会有所帮助。您需要获得vector的底层数据数组:

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

如果您的实现不支持C++11,您可以执行以下操作:

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

但是,如果您被要求重新实现一些使用矢量的代码,您可能需要重新实现testPIN函数:

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

然后通过矢量:

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

因为CCD_ 3的内部存储器结构与CCD_。

请检查一下。

如何在C++中将矢量转换为数组