std :: map 내부에 저장된 std :: set에서 요소를 삭제하려면 어떻게해야합니까?

제인 웨인

클래스에 다음 데이터 구조가 저장되어 있습니다.

class MyClass {
 private:
  std::map<std::string, std::set<std::string>> myMap;
 public:
  void remove(std::string id); //trying to remove items from sets inside myMap
}

그런 다음 세트에서 항목을 삭제하는 방법이 있습니다. 다음 두 가지 방법을 시도했지만 둘 다 작동하지 않았습니다. 접근 1, 사용 for범위.

for (auto pair : myMap) {
 auto set = pair.second;
 if (set.count(id)) {
  set.erase(id);
 }
}

, 사용이 접근 iterator.

auto it = myMap.begin();
while (it != myMap.end()) {
 auto set = it->second;
 if (set.count(id)) {
  set.erase(id);
 }
 it++;
}

C ++에서 맵 내부의 집합에서 요소를 제거하는 올바른 방법은 무엇입니까? 내 코드 myMapstd::map<std::string, std::set<std::string>*>(포인터) 로 정의 했을 때 작동했습니다 .

호두 까는 집게

다음과 같다고 가정 std::map합니다.

std::map<std::string, std::set<std::string>> myMap;
myMap["a"].insert("aaa");
myMap["a"].insert("abb");
myMap["a"].insert("acc");

myMap["b"].insert("aaa");
myMap["b"].insert("abb");
myMap["b"].insert("acc");

그런 다음 다음을 std::set수행하여 항목을 삭제할 수 있습니다 .

for (auto& i : myMap) {
    i.second.erase("aaa");
}

데모

질문의 접근이 작동하지 않는 이유는 무엇입니까?

왜냐하면, 다음을 수행하여 for(auto pair : myMap) {...}그리고 auto set = pair.second;실제로에서 데이터의 복사본에 노력하고 있습니다 myMap. 그래서, 대신 당신은 같은 실제 데이터에 대한 참조를 사용해야 for(auto& pair : myMap) {...}하고 auto& set = pair.second;.

또한 존재std::set::erase 하는 std::set경우 데이터를 제거 하므로 ID의 존재를 수동으로 확인할 필요 없습니다 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

배열에서 중첩 된 요소를 삭제하려면 어떻게해야합니까?

분류에서Dev

C ++ 두 개의 다른 std :: list에서 동일한 요소를 참조하는 포인터를 제거하려면 어떻게해야합니까?

분류에서Dev

GitLab Runner에서 std 오류를 std로 리디렉션하려면 어떻게해야합니까?

분류에서Dev

화살표가있는 github에서 저장소를 삭제하려면 어떻게해야합니까?

분류에서Dev

std :: forward_list에 저장된 동적 요소를 삭제하는 방법

분류에서Dev

GCP : 삭제 된 VM에 대한 요금이 부과됩니다. 리소스를 개별적으로 삭제하려면 어떻게해야합니까?

분류에서Dev

내 redux 저장소에서 어레이를 제거하려면 어떻게해야합니까?

분류에서Dev

내 홈 폴더에 첨부되어 있고 GitHub의 저장소가 삭제 된 경우 터미널에서 git master 브랜치를 삭제하려면 어떻게해야합니까?

분류에서Dev

Windows 7에서 삭제 된 사용자의 홈 폴더를 제거하려면 어떻게해야합니까?

분류에서Dev

분기 된 GITHUB 저장소에서 도커 이미지를 생성하려면 어떻게해야합니까?

분류에서Dev

메모장 ++에서 두 문자 사이의 텍스트를 삭제하려면 어떻게해야합니까?

분류에서Dev

삭제 된 MongoDB Docker 컨테이너에서 데이터를 복구하려면 어떻게해야합니까?

분류에서Dev

홈페이지에서 삭제 된 후크를 복원하려면 어떻게해야합니까?

분류에서Dev

클라우드 저장 파일을 삭제하지 않고 내 PC에서 Google 드라이브를 제거하려면 어떻게해야합니까?

분류에서Dev

텍스트 파일에 기록 된 마지막 단어를 삭제하려면 어떻게해야합니까?

분류에서Dev

생성 된 이미지를 내 폴더에 저장하려면 어떻게해야합니까?

분류에서Dev

Visual Studio에서 내 클래스를 std :: array 및 std :: vector처럼 디버그 친화적으로 만들려면 어떻게해야합니까?

분류에서Dev

일부 변수를 암호화 된 형식으로 로컬 저장소에 저장하고 나중에 해독하려면 어떻게해야합니까?

분류에서Dev

터미널에 "Documents \ (2)"로 나열된 디렉토리를 삭제하려면 어떻게해야합니까?

분류에서Dev

이 함수에서 인쇄 된 숫자를 목록 (Python)에 저장하려면 어떻게해야합니까?

분류에서Dev

배열의 세 번째 수준에 포함 된 요소를 제거하려면 어떻게해야합니까?

분류에서Dev

Android에서 데이터를 저장하려면 어떻게해야합니까?

분류에서Dev

Glade에서 메뉴를 삭제하려면 어떻게해야합니까?

분류에서Dev

OpsCenter에서 개체를 삭제하려면 어떻게해야합니까?

분류에서Dev

laravel 5.3에서 폴더를 삭제하려면 어떻게해야합니까?

분류에서Dev

내 저장소에서 Upsert를 수행하는 방법을 만들려면 어떻게해야합니까?

분류에서Dev

Github 저장소를 PC에 수동으로 복제하려면 어떻게해야합니까?

분류에서Dev

Flask를 사용하여 웹 소켓에서 저장된 데이터를 제공하려면 어떻게해야합니까?

분류에서Dev

macOS에서 내 저장소에 대해 SSH 설정을 유지하려면 어떻게해야합니까?

Related 관련 기사

  1. 1

    배열에서 중첩 된 요소를 삭제하려면 어떻게해야합니까?

  2. 2

    C ++ 두 개의 다른 std :: list에서 동일한 요소를 참조하는 포인터를 제거하려면 어떻게해야합니까?

  3. 3

    GitLab Runner에서 std 오류를 std로 리디렉션하려면 어떻게해야합니까?

  4. 4

    화살표가있는 github에서 저장소를 삭제하려면 어떻게해야합니까?

  5. 5

    std :: forward_list에 저장된 동적 요소를 삭제하는 방법

  6. 6

    GCP : 삭제 된 VM에 대한 요금이 부과됩니다. 리소스를 개별적으로 삭제하려면 어떻게해야합니까?

  7. 7

    내 redux 저장소에서 어레이를 제거하려면 어떻게해야합니까?

  8. 8

    내 홈 폴더에 첨부되어 있고 GitHub의 저장소가 삭제 된 경우 터미널에서 git master 브랜치를 삭제하려면 어떻게해야합니까?

  9. 9

    Windows 7에서 삭제 된 사용자의 홈 폴더를 제거하려면 어떻게해야합니까?

  10. 10

    분기 된 GITHUB 저장소에서 도커 이미지를 생성하려면 어떻게해야합니까?

  11. 11

    메모장 ++에서 두 문자 사이의 텍스트를 삭제하려면 어떻게해야합니까?

  12. 12

    삭제 된 MongoDB Docker 컨테이너에서 데이터를 복구하려면 어떻게해야합니까?

  13. 13

    홈페이지에서 삭제 된 후크를 복원하려면 어떻게해야합니까?

  14. 14

    클라우드 저장 파일을 삭제하지 않고 내 PC에서 Google 드라이브를 제거하려면 어떻게해야합니까?

  15. 15

    텍스트 파일에 기록 된 마지막 단어를 삭제하려면 어떻게해야합니까?

  16. 16

    생성 된 이미지를 내 폴더에 저장하려면 어떻게해야합니까?

  17. 17

    Visual Studio에서 내 클래스를 std :: array 및 std :: vector처럼 디버그 친화적으로 만들려면 어떻게해야합니까?

  18. 18

    일부 변수를 암호화 된 형식으로 로컬 저장소에 저장하고 나중에 해독하려면 어떻게해야합니까?

  19. 19

    터미널에 "Documents \ (2)"로 나열된 디렉토리를 삭제하려면 어떻게해야합니까?

  20. 20

    이 함수에서 인쇄 된 숫자를 목록 (Python)에 저장하려면 어떻게해야합니까?

  21. 21

    배열의 세 번째 수준에 포함 된 요소를 제거하려면 어떻게해야합니까?

  22. 22

    Android에서 데이터를 저장하려면 어떻게해야합니까?

  23. 23

    Glade에서 메뉴를 삭제하려면 어떻게해야합니까?

  24. 24

    OpsCenter에서 개체를 삭제하려면 어떻게해야합니까?

  25. 25

    laravel 5.3에서 폴더를 삭제하려면 어떻게해야합니까?

  26. 26

    내 저장소에서 Upsert를 수행하는 방법을 만들려면 어떻게해야합니까?

  27. 27

    Github 저장소를 PC에 수동으로 복제하려면 어떻게해야합니까?

  28. 28

    Flask를 사용하여 웹 소켓에서 저장된 데이터를 제공하려면 어떻게해야합니까?

  29. 29

    macOS에서 내 저장소에 대해 SSH 설정을 유지하려면 어떻게해야합니까?

뜨겁다태그

보관