C++ 不存在合适的构造函数-Vector

C++ 不存在合适的构造函数-Vector,c++,c++11,vector,pass-by-reference,function-definition,C++,C++11,Vector,Pass By Reference,Function Definition,今天我为自己开始了一个简单的编码项目,但我无法找出这个错误,也无法找到解决方法。我遇到的错误发生在我的do循环中。更具体地说,它发生在作为参数传递Nums的每个函数调用中。错误说明不存在合适的构造函数,无法将其从“std::vector[10]”转换为“std::vector” 在此方面的任何帮助都将不胜感激!蒂亚 //This program checks to see if a multiplied vector value is odd or even //CheckOddEven.cpp

今天我为自己开始了一个简单的编码项目,但我无法找出这个错误,也无法找到解决方法。我遇到的错误发生在我的
do
循环中。更具体地说,它发生在作为参数传递
Nums
的每个函数调用中。错误说明
不存在合适的构造函数,无法将其从“std::vector[10]”转换为“std::vector”

在此方面的任何帮助都将不胜感激!蒂亚

//This program checks to see if a multiplied vector value is odd or even
//CheckOddEven.cpp

#include <iostream>
#include <vector>
#include <numeric>

using namespace std;

int setSize(int size, vector <int> Nums) //Sets vector size to user defined size
{
        //Prompt user to enter an integer to establish array size
        cout << "How many integers would you like to multiply?: ";

        //Store user input to size
        cin >> size;

        //Resize vector to user size
        Nums.resize(size);

        return size;
}

vector <int> setNum(int size, int x, vector <int> Nums) //Sets values in each index
{
        //Insertion loop to Nums vector
        for (int i = 0; i < size; i++)
        {
                cout << "Enter integer #" << i + 1 << ": ";
                cin >> x;
                Nums.push_back(x); //Assigns value into vector
        }

        return Nums;
}

int doMath(vector <int> Nums, int result)
{
        //Loop through Nums vector and multiply all values
        accumulate(Nums.begin(), Nums.end(), result, multiplies<int>());

        return result;
}

string oddEven(int result, string msg) //Check if int is even by seeing if there is a remainder
{
        //If no remainder exists then positive
        if (result % 2 == 0)
                {
                        msg += "positive.";
                }
                
        //If remainder exists then negative
        else
        {
                msg += "negative.";
        }

        return msg;
}

void Display(int result, string msg)
{
        cout << "The product of your integers is " << result << endl;
        cout << msg;
}

char checkCont(char cont)
{
        //Asks user if they want to check another integer
        cout << "Would you like to check another? (y/n)" << endl;

        //Assigns input as char into cont
        cin >> cont;

        //Displays exit message and ends do-while
        if (cont == 'n' || cont == 'N')
        {
                cout << "Thank you for using the Odd-Even Checker!" << endl;
                cout << "Have a great day!" << endl;
        }

        return 'z';
}

int main()
{
        int size; //User defined vector size
        string msg = "The number you calculated is ";
        char cont = ' '; //Char value for checking another vector
        vector <int> Nums[10]; //Create int vector with predetermined size..can be changed with resize
        int x; //User numbers
        int result;

        cout << "Welcome to the Odd-Even Checker!" << endl;
        cout << "This program multiplies a given amount of numbers, then checks to see if the answer is even or odd." << endl;

        do //Requires to run at least once
        {
                setSize(size, Nums);
                setNum(size, x, Nums);
                doMath(Nums, result);
                oddEven(result, msg);
                Display(result, msg);
                checkCont(cont);
        } while (cont == 'y' || cont == 'Y'); //end do-while

        return 0;
}
//此程序检查乘以的向量值是奇数还是偶数
//CheckOddEven.cpp
#包括
#包括
#包括
使用名称空间std;
int setSize(int size,vector Nums)//将向量大小设置为用户定义的大小
{
//提示用户输入整数以确定数组大小
大小;
//根据用户大小调整向量大小
调整大小(大小);
返回大小;
}
vector setNum(int size,int x,vector Nums)//设置每个索引中的值
{
//插入循环到Nums向量
对于(int i=0;i你可以声明一个向量数组吗

vector <int> Nums[10];
没有道理

将函数中需要向量函数参数的类型更改为引用类型,如

int setSize(int size, vector <int> &Nums);
                                  ^^^^^^
调用算法
std::acculate
后,不会更改变量结果

此外,您正在传递未初始化的变量结果

int result;
你至少应该写信

long long int doMath( const std::vector<int> &Nums )
{
        //Loop through Nums vector and multiply all values
    long long result = std::accumulate(Nums.cbegin(), Nums.cend(), 1ll, std::multiplies<long long>());

    return result;
}

确保函数按预期工作后,可以将其添加到主程序。

这不是C。不要误用标记。
Nums.resize(size);
int setSize(int size, vector <int> &Nums);
                                  ^^^^^^
int doMath(vector <int> Nums, int result)
{
        //Loop through Nums vector and multiply all values
        accumulate(Nums.begin(), Nums.end(), result, multiplies<int>());

        return result;
}
int result;
long long int doMath( const std::vector<int> &Nums )
{
        //Loop through Nums vector and multiply all values
    long long result = std::accumulate(Nums.cbegin(), Nums.cend(), 1ll, std::multiplies<long long>());

    return result;
}
#include <iostream>
#include <vector>

std::vector<int>::size_type setSize( std::vector<int> &Nums )
{
    //Prompt user to enter an integer to establish array size
    std::cout << "How many integers would you like to multiply?: ";

    //Store user input to size
    std::vector<int>::size_type size = 0;
    std::cin >> size;

    //Resize vector to user size
    Nums.resize( size );

    return size;
}

int main() 
{
    std::vector<int> Nums;
    
    auto size = setSize( Nums );
    
    if ( size == Nums.size() )
    {
        std::cout << "The function works correctly.\n";
    }
    else
    {
        std::cout << "Something is wrong with the function!\n";
    }
    
    return 0;
}