iterator Class
class QLinkedList::iteratorQLinkedList::iterator 클래스는 QLinkedList 에 대한 STL 스타일의 비-const 이터레이터를 제공합니다. 더 보기...
공용 함수
iterator() | |
bool | operator!=(const QLinkedList<T>::const_iterator &other) const |
bool | operator!=(const QLinkedList<T>::iterator &other) const |
T & | operator*() const |
QLinkedList<T>::iterator | operator+(int j) const |
QLinkedList<T>::iterator & | operator++() |
QLinkedList<T>::iterator | operator++(int) |
QLinkedList<T>::iterator & | operator+=(int j) |
QLinkedList<T>::iterator | operator-(int j) const |
QLinkedList<T>::iterator & | operator--() |
QLinkedList<T>::iterator | operator--(int) |
QLinkedList<T>::iterator & | operator-=(int j) |
T * | operator->() const |
bool | operator==(const QLinkedList<T>::const_iterator &other) const |
bool | operator==(const QLinkedList<T>::iterator &other) const |
상세 설명
QLinkedList 에는 STL 스타일 이 터레이터와 Java 스타일 이터레이터가 모두 있습니다. STL 스타일 이터레이터는 더 낮은 수준이고 사용하기가 더 번거롭지만, 반면에 약간 더 빠르며 이미 STL을 알고 있는 개발자에게는 친숙하다는 장점이 있습니다.
QLinkedList<T>::이터레이터를 사용하면 QLinkedList<T>를 반복하고 이터레이터와 연결된 목록 항목을 수정할 수 있습니다. QLinkedList 를 반복하려면 QLinkedList::const_iterator 을 대신 사용하세요. 일반적으로 이터레이터를 통해 QLinkedList 을 변경해야 하는 경우가 아니라면 상수가 아닌 QLinkedList 에도 QLinkedList::const_iterator 을 사용하는 것이 좋습니다. Const 이터레이터는 약간 더 빠르며 코드 가독성을 향상시킬 수 있습니다.
기본 QLinkedList::iterator 생성자는 초기화되지 않은 이터레이터를 생성합니다. QLinkedList::begin (), QLinkedList::end() 또는 QLinkedList::insert()와 같은 함수를 사용하여 초기화해야 반복을 시작할 수 있습니다. 다음은 목록에 저장된 모든 항목을 인쇄하는 일반적인 루프입니다:
QLinkedList<QString> list; list.append("January"); list.append("February"); ... list.append("December"); QLinkedList<QString>::iterator i; for (i = list.begin(); i != list.end(); ++i) cout << *i << Qt::endl;
STL 스타일 이터레이터는 generic algorithms 에 대한 인수로 사용할 수 있습니다. 예를 들어 목록에서 항목을 찾는 방법은 다음과 같습니다:
QLinkedList<QString> list; ... QLinkedList<QString>::iterator it = std::find(list.begin(), list.end(), "Joel"); if (it != list.end()) cout << "Found Joel" << Qt::endl;
QLinkedList::iterator 으로는 할 수 있지만 QLinkedList::const_iterator 으로는 할 수 없는 몇 가지 예를 살펴봅시다. 다음은 QLinkedList<int>에 저장된 모든 값을 2씩 증가시키는 예제입니다:
QLinkedList<int>::iterator i; for (i = list.begin(); i != list.end(); ++i) *i += 2;
다음은 QLinkedList<QString>에서 밑줄 문자로 시작하는 모든 항목을 제거하는 예제입니다:
QLinkedList<QString> list; ... QLinkedList<QString>::iterator i = list.begin(); while (i != list.end()) { if ((*i).startsWith('_')) i = list.erase(i); else ++i; }
QLinkedList::erase()를 호출하면 이터레이터가 가리키는 항목이 목록에서 제거되고 다음 항목으로 이터레이터가 반환됩니다. 다음은 반복하는 동안 항목을 제거하는 또 다른 방법입니다:
QLinkedList<QString>::iterator i = list.begin(); while (i != list.end()) { QLinkedList<QString>::iterator previous = i; ++i; if ((*previous).startsWith('_')) list.erase(previous); }
다음과 같은 코드를 작성하고 싶을 수도 있습니다:
// WRONG while (i != list.end()) { if ((*i).startsWith('_')) list.erase(i); ++i; }
그러나 i
은 erase() 호출 뒤에 매달린 반복자이기 때문에 ++i
에서 잠재적으로 충돌이 발생할 수 있습니다.
동일한 목록에 여러 개의 이터레이터를 사용할 수 있습니다. 목록에 항목을 추가하면 기존 반복기는 유효하게 유지됩니다. 목록에서 항목을 제거하면 제거된 항목을 가리키는 반복자는 댕글 반복자가 됩니다.
경고: 암시적으로 공유된 컨테이너의 이터레이터는 STL 이터레이터와 똑같이 작동하지 않습니다. 해당 컨테이너에서 이터레이터가 활성화되어 있는 동안에는 컨테이너를 복사하지 않아야 합니다. 자세한 내용은 암시적 공유 반복자 문제를 참조하세요.
QLinkedList::const_iterator 와 QMutableLinkedListIterator도 참조하세요 .
멤버 함수 문서
bool iterator::operator==(const QLinkedList<T>::const_iterator &other) const
bool iterator::operator==(const QLinkedList<T>::iterator &other) const
other 이 이터레이터와 동일한 항목을 가리키면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
operator!=()도 참조하세요 .
bool iterator::operator!=(const QLinkedList<T>::const_iterator &other) const
bool iterator::operator!=(const QLinkedList<T>::iterator &other) const
other 이 이터레이터와 다른 항목을 가리키면 true
을 반환하고, 그렇지 않으면 false
을 반환합니다.
operator==()도 참조하세요 .
iterator::iterator()
초기화되지 않은 이터레이터를 생성합니다.
연산자*() 및 연산자++() 같은 함수는 초기화되지 않은 이터레이터에서 호출해서는 안 됩니다. 사용하기 전에 operator=()를 사용하여 값을 할당하세요.
QLinkedList::begin() 및 QLinkedList::end()도 참조하세요 .
T &iterator::operator*() const
현재 항목에 대한 수정 가능한 참조를 반환합니다.
예를 들어 할당 왼쪽에 있는 연산자*()를 사용하여 항목의 값을 변경할 수 있습니다:
if (*it == "Hello") *it = "Bonjour";
operator->()도 참조하세요 .
QLinkedList<T>::iterator iterator::operator+(int j) const
이 이터레이터에서 앞으로 j 위치에 있는 항목에 대한 이터레이터를 반환합니다. ( j 이 음수이면 반복기는 뒤로 이동합니다.)
이 작업은 j 값이 큰 경우 느릴 수 있습니다.
operator-()도 참조하세요 .
QLinkedList<T>::iterator &iterator::operator++()
접두사 ++ 연산자(++it
)는 목록의 다음 항목으로 반복기를 전진시키고 새로운 현재 항목으로 반복기를 반환합니다.
QLinkedList::end()에서 이 함수를 호출하면 정의되지 않은 결과가 나타납니다.
operator--()도 참조하세요 .
QLinkedList<T>::iterator iterator::operator++(int)
이 함수는 오버로드된 함수입니다.
후위 ++ 연산자(it++
)는 반복기를 목록의 다음 항목으로 전진시키고 반복기를 이전 현재 항목으로 반환합니다.
QLinkedList<T>::iterator &iterator::operator+=(int j)
반복기를 j 항목만큼 전진합니다. ( j 이 음수이면 반복기가 뒤로 이동합니다.)
operator-=() 및 operator+()도 참조하세요 .
QLinkedList<T>::iterator iterator::operator-(int j) const
이 반복자에서 뒤로 j 위치에 있는 항목에 대한 반복자를 반환합니다. ( j 이 음수이면 반복기는 앞으로 이동합니다.)
이 작업은 j 값이 큰 경우 느릴 수 있습니다.
operator+()도 참조하세요 .
QLinkedList<T>::iterator &iterator::operator--()
접두사 - 연산자(--it
)는 이전 항목을 현재 항목으로 만들고 새 현재 항목에 반복자를 반환합니다.
QLinkedList::begin()에서 이 함수를 호출하면 정의되지 않은 결과가 나타납니다.
operator++()도 참조하세요 .
QLinkedList<T>::iterator iterator::operator--(int)
이 함수는 오버로드된 함수입니다.
후위 연산자(it--
)는 이전 항목을 현재 항목으로 만들고 이전 항목에 대한 반복자를 반환합니다.
QLinkedList<T>::iterator &iterator::operator-=(int j)
반복기를 j 항목만큼 뒤로 이동합니다. ( j 이 음수이면 반복기는 앞으로 이동합니다.)
operator+=() 및 operator-()도 참조하세요 .
T *iterator::operator->() const
현재 항목에 대한 포인터를 반환합니다.
operator*()도 참조하세요 .
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.