필자는 반복자가 가리키는 deque 요소의 인덱스를 반환해야한다. 반복기에서 int를 가져 오는 방법은 무엇입니까?C++에서 이터레이터의 int 인덱스를 얻는 방법은 무엇입니까?
답변
std::ptrdiff_t index = std::distance(myDeque.begin(), curIterator);
당신은 사용할 수 있습니다
std::ptrdiff_t index(std::distance(my_container.begin(), my_iterator));
은 루틴의 실행 비용을 알고 있어야합니다, 당신이 사용하는 데이터 구조에 따라 달라집니다 however-.
size_t index = some_iterator - some_deque.begin()
은 분명히이 (. std::list
또는 무엇 이건 예) 모든 반복자 작동하지 않습니다하지만 난 어떤 우아함이 있다는 제출 것 :
아니면 iterator (random, forward 등)의 클래스에 따라 달라진다. –
나는 컨테이너의 각 요소를 통해 거리 스텝을 가정하여 숫자를 찾는다. 그래서 큰 deque를 위해 런타임 비용은 클 것이다. 그러나 내 deque는 10 개 요소보다 크지 않아야합니다. 거리가 int를 반환합니까? index() 호출은 무엇을합니까? – user83
deque가 10 개 이상의 요소를 포함하지 않아야한다면, 대신에'vector'를 사용해야한다고 제안하거나 적어도 deque를 고수하는 좋은 근거가 있어야합니다. index() "call"은'std :: distance'의 반환 값으로 구성된'index'라는 변수입니다. – fbrereto
임의 접근 반복자를 들어 당신은 뺄셈을 사용할 수 있습니다 이 기술은 일정한 시간이 필요할 때만 사용할 수 있습니다. 컨테이너에 무작위 액세스 반복자가 없으면 어쨌든 색인을 찾으려고 시도하는 것이 좋습니다. 두 제시된 방법 중
: 후자는 임의 접근 반복자에만 적용되는 우수성이
std::ptrdiff_t index(std::distance(my_container.begin(), my_iterator));
및
std::ptrdiff_t index = some_iterator - some_deque.begin()
... - 다른 컨테이너를 대체 할 때 따라서를 , 우연히 값 비싼 연산 (O (n))을 얻지 못한다.
- 1. C에서 이터레이터의 메모리 사용량
- 2. Objective C에서 배열 인덱스를 결정하는 방법은 무엇입니까?
- 3. C에서 짧은 int 리터럴
- 4. Linq에서 무언가에 의해 정렬 된 레코드의 인덱스를 얻는 방법은 무엇입니까?
- 5. 클릭 핸들러에서 Silverlight TextBox의 문자 인덱스를 얻는 방법은 무엇입니까?
- 6. C에서 다차원 배열 요소의 인덱스를 반환하는 방법은 무엇입니까?
- 7. C에서 int 변수가 9 인 경우 09를 인쇄하는 방법은 무엇입니까?
- 8. jQuery를 사용하여 컨테이너의 ACTIVE CHILD div 인덱스를 얻는 방법은 무엇입니까?
- 9. Backbone.js : 백본 컬렉션에서 모델의 인덱스를 얻는 방법은 무엇입니까?
- 10. 숙제 : C에서 포인터를 사용하여 배열의 부분 문자열을 얻는 방법은 무엇입니까?
- 11. 두 개의 Int 값을 나누어 플로트를 얻는 올바른 방법은 무엇입니까?
- 12. J2ME에서 int []의 최대 값을 얻는 방법은 무엇입니까?
- 13. Int 배열에서 가장 일반적인 값을 얻는 방법은 무엇입니까? (C 번호)
- 14. solr 인덱스를 업데이트하는 방법은 무엇입니까?
- 15. gridview에서 셀 인덱스를 얻는 방법
- 16. 배열에서 항목의 인덱스를 얻는 방법
- 17. objective-c에서 사용 가능한 iPhone 언어 이름의 현지화 된 목록을 얻는 방법은 무엇입니까? 오브젝티브 C에서
- 18. 안드로이드 JSONObject에서 int 타입을 얻는 법
- 19. 바쁜 테이블의 인덱스를 최적화하는 방법은 무엇입니까?
- 20. Objective C에서 메서드의 반환 유형을 얻는 방법은 무엇입니까?
- 21. C에서 함수의 인수에 대한 포인터를 얻는 방법은 무엇입니까?
- 22. C에서 Linux의 실제 CPU 수를 얻는 방법은 무엇입니까?
- 23. Pro * C에서 Oracle 쿼리 상태를 얻는 방법은 무엇입니까?
- 24. c에서 .exe 파일 속성 정보를 얻는 방법은 무엇입니까?
- 25. LINQ ToDictionary 항목 인덱스를 얻는 방법?
- 26. 프로세스 정보를 얻는 방법은 무엇입니까?
- 27. c에서 비밀번호를 마스크하는 방법은 무엇입니까? C에서
- 28. 방법은 INT
- 29. C에서 포인터가있는 int 행렬 - 메모리 할당 혼동
- 30. C에서 문자열을 int 배열로 변환하는 방법 #
왜 색인이 필요합니까? 당신은 객체를 역 참조 할 수 없으며 그것에 반복 연산을 할 수 있습니까? –
어떻게 그렇게됩니까? iterator를 dereferencing하는 것은 포인터를 역 참조하는 것과 같지 않고 deque의 위치가 아닌 메모리 주소를 알려주지 않을까? – user83