C ++でこれに直接類似したものはありますか?
for num in [1,4,5] :
num=1
、、、、を使用してループを繰り返し4
ます5
。このループ内でcontinueを呼び出すと、どこに電話しても次の番号に移動します。
C ++にも同様の構造がありますか?
C ++ 11では、以下が有効です。
for (auto num : {1,4,5})
{
// loop body
}
{1,4,5}
これがのインスタンスですstd::initializer_list<int>
。
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の場合、短い答えは「いいえ」であり、同様の構造はありません。
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;
}
}
同様のことは、この整数のstl-Vectorを作成し、forループとイテレーターを使用して反復することです。しかし、C++で行うのはあまり実用的なことではないと思います。
Boost.Foreachはあなたが探しているものです。
Ignacio's answer に記載されているように、標準テンプレート ライブラリの vector がここに行く方法です。cplusplus.comのエントリの最初の例は、あなたが望むもののようです。