라이브러리
[PHP] SplDoublyLinkedList::setIteratorMode - 반복 모드를 설정합니다.
PHP 에서 SplDoublyLinkedList는 이중 연결 리스트를 구현한 인터페이스입니다. 이중 연결 리스트는 데이터를 저장하고, 데이터를 추가, 삭제, 수정할 수 있는 자료 구조입니다. SplDoublyLinkedList는 이중 연결 리스트를 구현한 클래스로, 이중 연결 리스트의 다양한 기능을 제공합니다.
SplDoublyLinkedList::setIteratorMode는 이중 연결 리스트의 이터레이터 모드를 설정하는 메서드입니다. 이터레이터 모드는 이중 연결 리스트의 이터레이터가 데이터를 순회할 때 사용하는 모드를 지정합니다. 이터레이터 모드는 다음과 같이 3 가지가 있습니다.
- SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE: 이터레이터 모드가 이 모드일 때, 이터레이터는 데이터가 변경되면 무효화됩니다. 이 모드는 데이터가 변경되면 이터레이터를 다시 초기화해야 하는 경우 사용합니다.
- SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT: 이터레이터 모드가 이 모드일 때, 이터레이터는 데이터가 변경되더라도 현재 위치를 유지합니다. 이 모드는 데이터가 변경되더라도 이터레이터가 현재 위치를 유지해야 하는 경우 사용합니다.
- SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT: 이터레이터 모드가 이 모드일 때, 이터레이터는 데이터가 변경되면 현재 위치를 무효화합니다. 이 모드는 데이터가 변경되면 이터레이터의 현재 위치를 다시 초기화해야 하는 경우 사용합니다.
예제를 통해 SplDoublyLinkedList::setIteratorMode를 사용하는 방법을 알아보겠습니다.
#hostingforum.kr
php
$list = new SplDoublyLinkedList();
// 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE로 설정
$list->setIteratorMode(SplDoublyLinkedList::SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE);
// 데이터를 추가합니다.
$list->push(1);
$list->push(2);
$list->push(3);
// 이터레이터를 생성합니다.
$iterator = $list->getIterator();
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
// 데이터를 변경합니다.
$list->offsetSet(1, 10);
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
위 예제에서, 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE로 설정한 후, 데이터를 추가하고, 이터레이터를 생성합니다. 데이터를 순회한 후, 데이터를 변경하고, 다시 데이터를 순회합니다. 이터레이터 모드가 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE인 경우, 데이터가 변경되면 이터레이터는 무효화됩니다. 따라서, 데이터를 순회할 때, 데이터가 변경된 것을 확인할 수 있습니다.
#hostingforum.kr
php
// 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT로 설정
$list->setIteratorMode(SplDoublyLinkedList::SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT);
// 데이터를 추가합니다.
$list->push(1);
$list->push(2);
$list->push(3);
// 이터레이터를 생성합니다.
$iterator = $list->getIterator();
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
// 데이터를 변경합니다.
$list->offsetSet(1, 10);
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
위 예제에서, 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT로 설정한 후, 데이터를 추가하고, 이터레이터를 생성합니다. 데이터를 순회한 후, 데이터를 변경하고, 다시 데이터를 순회합니다. 이터레이터 모드가 SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT인 경우, 데이터가 변경되더라도 이터레이터는 현재 위치를 유지합니다. 따라서, 데이터를 순회할 때, 데이터가 변경된 것을 확인할 수 없습니다.
#hostingforum.kr
php
// 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT로 설정
$list->setIteratorMode(SplDoublyLinkedList::SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT);
// 데이터를 추가합니다.
$list->push(1);
$list->push(2);
$list->push(3);
// 이터레이터를 생성합니다.
$iterator = $list->getIterator();
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
// 데이터를 변경합니다.
$list->offsetSet(1, 10);
// 데이터를 순회합니다.
while ($iterator->valid()) {
echo $iterator->current() . "
";
$iterator->next();
}
위 예제에서, 이터레이터 모드를 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT로 설정한 후, 데이터를 추가하고, 이터레이터를 생성합니다. 데이터를 순회한 후, 데이터를 변경하고, 다시 데이터를 순회합니다. 이터레이터 모드가 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT인 경우, 데이터가 변경되면 이터레이터의 현재 위치는 무효화됩니다. 따라서, 데이터를 순회할 때, 데이터가 변경된 것을 확인할 수 있습니다.
위 예제를 통해 SplDoublyLinkedList::setIteratorMode를 사용하는 방법을 알아보았습니다. 이터레이터 모드는 이중 연결 리스트의 이터레이터가 데이터를 순회할 때 사용하는 모드를 지정합니다. 이터레이터 모드는 SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE, SPL_DOUBLYLINKEDLIST_ITERATOR_KEEP_CURRENT, SPL_DOUBLYLINKEDLIST_ITERATOR_INVALIDATE_CURRENT로 설정할 수 있습니다.
-
- 나우호스팅 @pcs8404
-
호스팅포럼 화이팅!
댓글목록
등록된 댓글이 없습니다.