c++ - vector 作为函数中的参数

标签 c++ vector

我有这样的代码: 请原谅我的波兰语名称,我希望这不是问题。如果你愿意,我可以更改它们。

#include <iostream>
#include <vector>
#include <math.h>

using namespace std;

//a few unimportant functions

void zamianaNaDziesietny(int podstawa, int liczba, int reszta[])
{
    vector < int > cyfra;
    cout <<"\n";

    for(int a = reszta.size(); a > 0; a--)
    {
        cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
    }

    for(int a = 1; a < cyfra.size(); a++)
    {
        cyfra[0] += cyfra[a];
    }

    cout << cyfra[0];
}

void zamianaNaDziesietny(int podstawa, int liczba, int reszta[])
{
    vector < int > cyfra;
    cout <<"\n";

    for(int a = reszta.size(); a > 0; a--) //request for member 'size' in 'reszta', which is of non-class type 'int*'
    {
        cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
    }

    for(int a = 1; a < cyfra.size(); a++)
    {
        cyfra[0] += cyfra[a];
    }

    cout << cyfra[0];
}

//another unimportant part of code

int main()
{
     //unimportant stuff

    zamianaZDziesietnego(podstawa, liczba);
    zamianaNaDziesietny(podstawa, liczba, reszta);

    return 0;
}

我不知道如何使用 vector “reszta”作为函数“zamiananaDziesietny”中的参数。 我应该输入什么让这个程序编译?

我收到 2 个错误: 其中之一是: “reszta”未在此范围内声明

这是一个数组...哦,好吧, vector 是一种数组...我想...我是菜鸟,所以我总是错的。

我可以在 main 中处理这个 vector ,添加“cout << reszta[0];” (只是在屏幕上写下这个 vector 的一个元素)在 main 中,就在这两个函数的归纳之间工作得很好。但我认为这个问题可以通过在 main 中设置这个 vector 来解决,然后它也将作为 zamianaZDziesietnego() 函数中的参数,但是......

我不知道如何在函数中使用 vector 作为参数。

我得到的第二个错误是: 请求'reszta'中的成员'size',它是非类类型'int *' 在第 32 行。

所以这是我的问题。 我已尝试以几种不同的方式输入此参数。

当我尝试: void zamianaNaDziesietny(int podstawa, int liczba, vector reszta[])

第二个错误改为: 请求'reszta'中的成员'size',它是指针类型'std::vector*'(也许你打算使用'->'?)|

下面几行也出现了新的错误:

'*(reszta + ((((sizetype)a) + -1u) * 12u)) * pow((double)podstawa, (double)(a + -1)) 中的 'operator*' 不匹配'|

好吧,我是一个大菜鸟,我不知道如何解决这个问题。谁能帮忙?

顺便说一句,如果有人感兴趣 - 我正在制作一个将二进制计数转换为十进制计数的程序,反之亦然。

最佳答案

只需像这样声明参数:

void zamianaNaDziesietny(int podstawa, int liczba, std::vector<int> reszta)
{
    vector < int > cyfra;
    cout <<"\n";

    for(int a = reszta.size(); a > 0; a--)
    {
        cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
    }

    for(int a = 1; a < cyfra.size(); a++)
    {
        cyfra[0] += cyfra[a];
    }

     cout << cyfra[0];
}

或者更好的是,通过引用传递 vector 以避免它被复制:

void zamianaNaDziesietny(int podstawa, int liczba, std::vector<int>& reszta)
{
    vector < int > cyfra;
    cout <<"\n";

    for(int a = reszta.size(); a > 0; a--)
    {
        cyfra.push_back(reszta[a - 1] * pow(podstawa, a - 1));
    }

    for(int a = 1; a < cyfra.size(); a++)
    {
        cyfra[0] += cyfra[a];
    }

     cout << cyfra[0];
}

您所做的是使用 int 数组 (int reszta[]) 作为参数而不是 vector - 它们是不同的类型。

关于c++ - vector 作为函数中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24719106/

相关文章:

c++ - 在父窗口中捕获 WM_MOUSEMOVE 事件

c++ - 如何实现子数组移位一位

c++ - 使用 vector (STL)时的未定义行为,请解释以下代码输出背后的原因

c++ - 最好保留 vec4 而不是 vec3 以避免总是转换?

全国 iOS 离线 map (OSM)

c++ - 将指向 reference_wrapper 的指针转换为指向底层的指针?

c++ - 函数原型(prototype)丢失,即使它存在

c++ - 为什么枚举会隐式转换为 std::string?

c++ - 将函数应用于 vector 子集的最佳方法是什么?

c++ - vector<bool>::push_back GCC 3.4.3 中的错误?