2

C ++でこれに直接類似したものはありますか?

for num in [1,4,5] :

num=1、、、、を使用してループを繰り返し4ます5。このループ内でcontinueを呼び出すと、どこに電話しても次の番号に移動します。

C ++にも同様の構造がありますか?

4

6 に答える 6

9

C ++ 11では、以下が有効です。

for (auto num : {1,4,5})
{
    // loop body
}

{1,4,5}これがのインスタンスですstd::initializer_list<int>

于 2012-06-15T16:11:42.943 に答える
4

C ++ 03では、最も近いものは次のようになります。

int values[] = {1,4,5};
for (int *p = values; p != values + sizeof(values) / sizeof(*values); ++p) {
    int num = *p;
    ...
}

定義する一般的なものは、C ++ 11std::endに、不要になったときに追加されたものです。

template <typename T, size_t N>
T *endof(T (&ra)[N]) {
    return ra + N;
}

次に、次のように使用します。

int values[] = {1,4,5};
for (int *p = values; p != endof(values); ++p) {
    int num = *p;
    ...
}

したがって、C ++ 03の場合、短い答えは「いいえ」であり、同様の構造はありません。

于 2012-06-15T16:13:06.720 に答える
2

vector<int>前方反復子を持つA。

編集:

男、私のC ++は錆びています...

#include <iostream>
#include <vector>

int main(int argc, char *argv[])
{
  int ints[] = {1, 4, 5};
  std::vector<int> v (ints, ints + 3);

  for (std::vector<int>::iterator i = v.begin(); i != v.end(); i++)
  {
    std::cout << *i << std::endl;
  }
}
于 2012-06-15T16:10:15.130 に答える
0

同様のことは、この整数のstl-Vectorを作成し、forループとイテレーターを使用して反復することです。しかし、C++で行うのはあまり実用的なことではないと思います。

于 2012-06-15T16:11:41.213 に答える
0

Boost.Foreachはあなたが探しているものです。

于 2012-06-15T16:11:55.823 に答える
0

Ignacio's answer に記載されているように、標準テンプレート ライブラリの vector がここに行く方法です。cplusplus.comのエントリの最初の例は、あなたが望むもののようです。

于 2012-06-15T16:22:24.737 に答える