산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial programming >> C 언어

예제가 있는 C++의 std::list

std::list란 무엇입니까?

C++에서 std::list는 저장소 컨테이너를 나타냅니다. std:list를 사용하면 어디에서나 항목을 삽입하고 제거할 수 있습니다. std::list는 이중 연결 목록으로 구현됩니다. 이는 목록 데이터에 양방향 및 순차적으로 액세스할 수 있음을 의미합니다.

표준 템플릿 라이브러리 목록은 빠른 랜덤 액세스를 지원하지 않지만 모든 방향에서 순차 액세스를 지원합니다.

다른 메모리 청크에 목록 요소를 분산할 수 있습니다. 데이터에 대한 순차 접근에 필요한 정보는 컨테이너에 저장됩니다. std::list는 런타임 중에 필요에 따라 양쪽 끝에서 확장 및 축소할 수 있습니다. 내부 할당자는 스토리지 요구 사항을 자동으로 충족합니다.

이 C++ 자습서에서는 다음을 배우게 됩니다.

std::list를 사용하는 이유

다음은 std::List를 사용하는 이유입니다.

목록 구문

std::list를 정의하려면 헤더 파일을 가져와야 합니다. 다음은 std::list 정의 구문입니다.

template < class Type, class Alloc =allocator<T> > class list;

다음은 위의 매개변수에 대한 설명입니다.

예시 1:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };

	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 해당 기능을 사용할 알고리즘 헤더 파일을 포함합니다.
  2. iostream 헤더 파일을 포함하여 해당 기능을 사용합니다.
  3. 기능을 사용하려면 목록 헤더 파일을 포함합니다.
  4. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 논리를 추가해야 합니다.
  5. 4개의 정수로 구성된 my_list라는 목록을 만듭니다.
  6. for 루프를 사용하여 루프 변수 x를 만듭니다. 이 변수는 목록 요소를 반복하는 데 사용됩니다.
  7. 콘솔에 목록의 값을 출력합니다.
  8. for 루프 본문의 끝입니다.
  9. main() 함수 본문의 끝입니다.

C++ 목록 함수

일반적인 std::list 함수는 다음과 같습니다.

기능 설명 insert() 이 함수는 반복자가 가리키는 위치 앞에 새 항목을 삽입합니다.push_back() 이 함수는 목록의 end.push_front() 목록의 앞쪽에 새 항목을 추가합니다.pop_front() 목록의 항목을 삭제합니다. 첫 번째 item.size()이 함수는 목록 요소의 수를 결정합니다.front()To는 목록의 첫 번째 항목을 결정합니다.back()To는 목록의 마지막 항목을 결정합니다.reverse()목록 항목을 뒤집습니다. 정렬된 목록.

생성자

다음은 헤더 파일에서 제공하는 기능 목록입니다.

예시 2:

#include <iostream>
#include <list>
using namespace std;
int main(void) {
	list<int> l;
	list<int> l1 = { 10, 20, 30 };
	list<int> l2(l1.begin(), l1.end());
	list<int> l3(move(l1));  
	cout << "Size of list l: " << l.size() << endl;
	cout << "List l2 contents: " << endl;
	for (auto it = l2.begin(); it != l2.end(); ++it)
	      cout << *it << endl;
	cout << "List l3 contents: " << endl;
	for (auto it = l3.begin(); it != l3.end(); ++it)
		cout << *it << endl;
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. iostream 헤더 파일을 포함하여 해당 기능을 사용합니다.
  2. 기능을 사용하려면 목록 헤더 파일을 포함합니다.
  3. 호출하지 않고 클래스를 사용하려면 코드에 std 네임스페이스를 포함합니다.
  4. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 논리를 추가해야 합니다.
  5. l이라는 빈 목록을 만듭니다.
  6. 3개의 정수로 구성된 l1이라는 목록을 만듭니다.
  7. 처음부터 끝까지 l1이라는 목록의 모든 요소를 ​​사용하여 l2라는 목록을 만듭니다.
  8. 이동 의미 체계를 사용하여 l3이라는 이름의 목록을 만듭니다. 목록 l3은 목록 l2와 동일한 내용을 갖습니다.
  9. 다른 텍스트와 함께 콘솔에 l이라는 목록의 크기를 인쇄합니다.
  10. 콘솔에 텍스트를 인쇄합니다.
  11. 이름이 지정된 반복자를 만들고 l2라는 목록의 요소를 반복하는 데 사용합니다.
  12. 콘솔에 l2라는 목록의 요소를 인쇄합니다.
  13. 콘솔에 일부 텍스트를 인쇄합니다.
  14. 이름이 지정된 반복자를 만들고 이를 사용하여 l3이라는 목록의 요소를 반복합니다.
  15. 콘솔에 l3이라는 이름의 목록 요소를 인쇄합니다.
  16. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  17. main() 함수 본문의 끝입니다.

컨테이너 속성

다음은 컨테이너 속성 목록입니다.

속성 설명 SequenceSequence 컨테이너는 요소를 엄격한 선형 순서로 정렬합니다. 요소는 시퀀스의 위치에 따라 액세스됩니다. 이중 연결 목록Every 요소에는 이전 및 다음 요소를 찾는 방법에 대한 정보가 있습니다. 이것은 삽입 및 삭제 작업을 위한 일정한 시간을 허용합니다. 할당자 인식 할당자 개체는 저장소 크기를 동적으로 수정하는 데 사용됩니다.

목록에 삽입

목록에 값을 삽입하는 데 사용할 수 있는 다양한 기능이 있습니다. 이를 시연해 보겠습니다.

예시 3:

#include <algorithm>
#include <iostream>
#include <list>
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	my_list.push_front(11);
	my_list.push_back(18);
	auto it = std::find(my_list.begin(), my_list.end(), 10);
	if (it != my_list.end()) {
		my_list.insert(it, 21);
	}
	for (int x : my_list) {
		std::cout << x << '\n';
	}
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 해당 기능을 사용할 알고리즘 헤더 파일을 포함합니다.
  2. iostream 헤더 파일을 포함하여 해당 기능을 사용합니다.
  3. 기능을 사용하려면 목록 헤더 파일을 포함합니다.
  4. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 논리를 추가해야 합니다.
  5. 4개의 정수로 구성된 my_list라는 목록을 만듭니다.
  6. my_list라는 이름의 목록 앞에 요소 11을 삽입합니다.
  7. my_list라는 목록의 끝에 요소 18을 삽입합니다.
  8. 반복자를 만들고 이를 사용하여 목록 my_list에서 요소 10을 찾습니다.
  9. if 문을 사용하여 위 요소를 찾았는지 여부를 확인합니다.
  10. 요소 21이 있는 경우 위 요소 앞에 삽입합니다.
  11. if 문의 본문 끝.
  12. for 루프를 사용하여 루프 변수 x를 만듭니다. 이 변수는 목록 요소를 반복하는 데 사용됩니다.
  13. 콘솔에 목록의 값을 출력합니다.
  14. for 루프 본문의 끝입니다.
  15. main() 함수 본문의 끝입니다.

목록에서 삭제

목록에서 항목을 삭제할 수 있습니다. Erase() 함수를 사용하면 목록에서 항목 또는 항목 범위를 삭제할 수 있습니다.

예시 4:

#include <algorithm>
#include <iostream>
#include <list>
using namespace std;
int main() {
	std::list<int> my_list = { 12, 5, 10, 9 };
	cout << "List elements before deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	list<int>::iterator i = my_list.begin();
	my_list.erase(i);
	cout << "\nList elements after deletion: ";
	for (int x : my_list) {
		std::cout << x << '\n';
	}
	return 0;
}

출력:

다음은 코드의 스크린샷입니다.

코드 설명:

  1. 해당 기능을 사용할 알고리즘 헤더 파일을 포함합니다.
  2. iostream 헤더 파일을 포함하여 해당 기능을 사용합니다.
  3. 기능을 사용하려면 목록 헤더 파일을 포함합니다.
  4. 클래스를 호출하지 않고 사용하려면 프로그램에 std 네임스페이스를 포함합니다.
  5. main() 함수를 호출합니다. 이 함수의 본문에 프로그램 논리를 추가해야 합니다.
  6. 4개의 정수로 구성된 my_list라는 목록을 만듭니다.
  7. 콘솔에 일부 텍스트를 인쇄합니다.
  8. for 루프를 사용하여 루프 변수 x를 만듭니다. 이 변수는 목록 요소를 반복하는 데 사용됩니다.
  9. 콘솔에 목록의 값을 출력합니다.
  10. for 루프 본문의 끝입니다.
  11. 목록의 첫 번째 요소를 가리키는 반복자 i를 만듭니다.
  12. 반복자 i가 가리키는 지우기() 함수를 사용합니다.
  13. 콘솔에 일부 텍스트를 인쇄합니다.
  14. for 루프를 사용하여 루프 변수 x를 만듭니다. 이 변수는 목록 요소를 반복하는 데 사용됩니다.
  15. 콘솔에 목록의 값을 출력합니다. 이것은 삭제 후에 옵니다.
  16. for 루프 본문의 끝입니다.
  17. 프로그램은 성공적으로 완료되면 값을 반환해야 합니다.
  18. main() 함수 본문의 끝입니다.

요약:


C 언어

  1. 예제가 있는 C++의 연산자:정의, 유형 및 프로그램
  2. C++ do… while 루프 예제
  3. EXAMPLE이 있는 C++ Switch Case 문
  4. 예제를 사용한 C++ 배열 동적 할당
  5. 예제가 있는 C++ 포인터
  6. 예제를 사용한 C++ 연산자 오버로딩
  7. 예제가 있는 C++ 구조체
  8. 프로그램 예제가 있는 C++ 함수
  9. 구조체와 클래스의 차이점:C++ 예제로 설명
  10. 예제가 있는 컬렉션의 Python 카운터