1. ホーム
  2. c++

[解決済み] C++のint配列のforeach

2022-03-05 01:35:59

質問

私はC++の初心者で、以下のコードを書いています。 呼び出し関数ですべてのアドオンを繰り返し処理する必要がありました。 testFunction . 私はこれがC#で動作することを知っていますが、このコードは動作しません。どなたか、C++でこれを行う正しい方法をご指摘いただけないでしょうか?

#include "stdafx.h"
#include <iostream>
#include "resource.h"

int testFunction(char* tester);
int _tmain()
{
    int mainProd=2;
    int Addons[]={7,8,9,10};

    testFunction(mainProd,Addons);


}
void testFunction(int mainProd,int addons[])
{
    for(int x = 0 ; addons.length;++x) ---- Not working 
    {
        std::cout<< addons[x];
    }
}


ベクターは、以下のように実装してみました。

#include "stdafx.h"
#include <iostream>
#include "resource.h"
#include <vector>

void testFunction(std::vector<int> addons);

int _tmain(int argc, _TCHAR* argv[])
{

    std::vector<int>  Addons ;
    for(int i = 0 ;i<10;++i)
    {
        Addons.push_back(i);
    }
     testFunction(Addons);
}

void testFunction(std::vector<int> addons)
{
    for(int i =0 ; i<addons.size();++i)
    {
        std::cout<<addons.at(i);
    }
}

解決方法は?

配列(生配列)は関数の引数として渡されるとポインタに分解されるため、配列はサイズ情報を持ちません。

配列の長さを関数内で知るには、関数に明示的に渡す必要があります。

あるいは、より良い方法として std::vector というようにすると .size() は、必要なときにいつでも利用できます。