구조체 멤버 변수를 직접 범위 for 문으로 돌려 보았습니다.
이런 식으로.
#include <iostream>
struct A{
int aa;
int bb;
int cc;
};
A a {1,2,3};
int main(void){
for(const auto& d: a){
std::cout << d << std::endl;
}
}
하지만 이것은 잘 작동하지 않는 것 같습니다. 파이자. 이오 에서 시도해 보았습니다.
//コンパイルエラー
Main.cpp:14:20: error: invalid range expression of type 'A'; no viable 'begin' function available
for(const auto& d: a){
^ ~
1 error generated.
화가 났습니다.
참고로 범위 for 문에 따르면
어폐를 두려워하지 말고, 멤버 함수에 begin() 및 end()를 가지는 클래스이면, 무엇이든 범위 for문의 범위로서 지정할 수 있다.
그렇기 때문에, 시작과 끝의 장소를 돌려주는 함수를 확실하게 만들어 붙여 보았습니다.
aa, bb, cc의 순서로 줄지어서, begin은 자신의 aa의 장소, end는 자신의 cc의 뒤, 라고 하는 기분입니다.
#include <iostream>
struct A{
int aa;
int bb;
int cc;
int* begin( ) {return &this->aa ; };
int* end( ) {return &this->cc + 1 ; };
};
A a {1,2,3};
int main(void){
for(const auto& d: a){
std::cout << d << std::endl;
}
}
//出力結果
1
2
3
움직였다!
Arduino에서도 시도했습니다.
움직였다!
이것으로 다치를 정리해 처리하거나 하는 것이 조금 간단해질지도.
움직이고 있기 때문에 대단히 사용하고 싶습니다. 역시 그만뒀다. 이쪽으로 합니다. 자세한 내용은 코멘트를 참조하십시오.
#include <iostream>
struct A{
int bb[3];
};
A a { {1,2,3} };
int main(void){
for(const auto& d: a.bb){
std::cout << d << std::endl;
}
}
조금 표제와는 달리 오는데, 똑같이 할 수 있다.
거친 생각으로 하고 있으니까, 다르고, 더 좋은 방법이 있어, 라고 하는 것이 있으면 코멘트 부탁합니다.
Reference
이 문제에 관하여(구조체 멤버 변수를 직접 범위 for 문으로 돌려 보았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ttatsf/items/f62329e1279392c89576텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)