1. ホーム
  2. java

[解決済み] C++で強化されたFORループ

2022-03-02 08:23:42

質問

私はJavaからC++に切り替えているのですが、C++には私がJavaで使っていた強化されたforループが含まれているかどうか、例として挙げたいと思います。

int[] numbers = {1,2,3,4,5,6,7,8,9,10};
for (int item : numbers) {
  System.out.println("Count is: " + item);
}

これと同じ"shortcut"はC++でも可能なのでしょうか?

どのように解決するのですか?

C++11では、あなたのコンパイラがサポートしていれば、そうです。レンジベースフォーと呼ばれるものです。

std::vector<int> v;

// fill vector

for (const int& i : v) { std::cout << i << "\n"; }

C言語形式の配列や、関数を持つすべての型に対して機能します。 begin()end() で、イテレータを返します。例

class test {
    int* array;
    size_t size;
public:
    test(size_t n) : array(new int[n]), size(n)
    {
        for (int i = 0; i < n; i++) { array[i] = i; }
    }
    ~test() { delete [] array; }
    int* begin() { return array; }
    int* end() { return array + size; }
};

int main()
{
    test T(10);
    for (auto& i : T) {
        std::cout << i;   // prints 0123456789
    }
}