괜찮습니다. 다른 (더 간단하지만 충분하지는 않지만 설명이 충분하지 않은) 질문을 위해, 이것이 가능하거나 불가능한 것인지 묻지는 않습니다. (이미 알아 냈기 때문에), 저보다 가벼운 대안이 있는지 묻고 있습니다. 문제.C++ 11 for for 루프가있는 벡터에서 지울 수 있습니까?
내가 가진 것은 메인 클래스로 간주 될 것이고, 그 메인 클래스에는 '월드 맵'클래스를 참조하는 변수가 있습니다. 본질적으로이 'WorldMap'클래스는 다른 클래스 변수의 컨테이너입니다. 메인 클래스는 모든 루핑을 수행하고 활성화 된 각 객체를 모두 업데이트합니다. 이 루프에는 반복적 인 컨테이너 집합 내부의 벡터 객체를 삭제해야하는 경우가 있습니다 (제공된 코드 참조). 그것은 반복적으로 반복적으로 다른 포인터 (및 등)에 필요한 개체를 가리키는 포인터로 필요한 변수를 참조해야 나중에 지울 것입니다 (이것은 C++로 전환하기 전에 사용한 개념이었습니다.) 11) 그래서 대신 루프에 대한 범위가 있습니다 (코드에도 표시됨). 예제 코드는 내가 지루함을 줄이고 코드를 훨씬 더 읽기 쉽도록 만들고 싶다는 생각을 보여줍니다.
struct item{
int stat;
};
struct character{
int otherStat;
std::vector<item> myItems;
};
struct charContainer{
std::map<int, character> myChars;
};
int main(){
//...
charContainer box;
//I want to do something closer to this
for(item targItem: box.myChars[iter].myItems){
//Then I only have to use targItem as the reference
if(targItem.isFinished)
box.myChars[iter].myItems.erase(targItem);
}
//Instead of doing this
for(int a=0;a<box.myChars[iter].myItems.size();a++){
//Then I have to repeatedly use box.myChars[iter].myItems[a]
if(box.myChars[iter].myItems[a].isFinished)
box.myChars[iter].myItems.erase(box.myChars[iter].myItems[a]);
}
}
TLDR :
이
은 예제 코드 나는 반복 C++ 11과 같이 루프에 대한 새 범위를 사용하여 전체 참조를 호출하는 지루함을 제거 할.EDIT : 요소를 모두 한꺼번에 삭제하려고하지 않습니다. 첫 번째 루프에서 어떻게 삭제할 것인지 묻습니다. 내가 그들을 (ex 문을 통해) 외부 적으로 끝낼 때 삭제하고있다. 모든 요소가 아닌 특정 요소를 어떻게 삭제합니까?
내가 그랬다면 누군가 걸어 들어가서 "너가 무엇을 묻고 시도하는지 모르겠다!"라고 말할 수있는 좋은 기회가되었습니다. – Molma
글쎄, 패딩없이 자연스러운 답변 (구조체와 같은)과 정보를 변경할 수 없다는 것을 분명히 알 수 있습니다 ... 괜찮습니다.하지만 짧음. 다른 말로하면 짧은 질문만으로도 설명을 요청할 수 있지만 긴 질문은 무시 될 수 있습니다. –
이것은 당신의주의를 꽤 잘 준 것 같습니다 : P. 사람들이 체이스를 즉시 자르고 싶다면 TLDR 메시지도 있습니다. 나는 과거의 경험에 따라 그러한 방식으로 만 포맷하고있다. – Molma