어떤 ** 요소가 지정된 인덱스에서`표준 : vector`에 존재 ** 있는지 확인하는 방법

모피어스 :

나는이 std::vector같은를

std::vector<std::pair<T,T>> xyz. xyz(10)의 길이를 가지며, 다른 기능은 정확히 3 점, 4, 6, 8과 말을 채운다 std::pair<T,T>. 반복하는 동안 벡터를 통해, 나는 비어 있지 않은 점은 그래서이와 더 작업 할 수 있습니다 어디 있는지 알고 싶어 std::pair<T,T>들.

내가 사용할 수있는 생각 c++17의를 std::optional<>하지만 난 사용하고 있습니다 c++14. 의 명소 찾을 수있는 방법이 있나요 std::vector(14) C ++에서 빈되지 않습니다.

벡터 함수에서 할당 한 후 다음과 같이 보일 것입니다

index  value
 0:
 1:
 2:
 3:
 4:    <7,8>
 5:
 6:    <9,2>
 7:
 8:    <8,6>
 9:

나는 위의 벡터를 반복 만 인쇄하고 싶은 말 std::pairs

존 딩 :

벡터의 모든 요소가 초기화를 위해 당신이 당신의 데이터 구조에 몇 가지 작업을하지 않으면 당신은 그것을 할 수 없습니다.

simplist 내가 생각하는 가장 빠른 방법은 저장하는 것입니다 std::vector<bool>나중에뿐만 아니라 "수정"a 요소 만 초기화 여부를 저장하기 위해 같은 크기의,하지만.

당신이 다른 벡터를 설정하는 것을 잊지 수 있음을 걱정하는 경우, 그들을 함께 결합 :

std::vector<std::pair<std::pair<int, int>, bool>> a;

당신은 여전히이 너무 추한 생각한다면, 당신은 당신의 자신의 간단한을 구현 할 수 있습니다 optional

추천

출처http://10.200.1.11:23101/article/api/json?id=405441&siteId=1