이 게시물은 다음과 같은 C++의 STL 컨테이너에서 임의의 값을 얻는 방법에 대해 설명합니다. std::vector, std::list, std::set, std::map, 등.

1. 반복자 사용

반복자를 사용하여 주어진 STL 컨테이너에서 임의의 값을 얻을 수 있습니다. 모든 STL 컨테이너가 반복자를 지원한다는 것을 알고 있습니다. 아이디어는 난수를 생성하는 것입니다 r 0과 사이 n-1, 어디 n 컨테이너의 크기입니다. 그런 다음 반복자를 주어진 컨테이너의 시작 부분으로 가져오고 해당 반복자를 다음과 같이 진행합니다. r 위치. 이제 반복자가 가리키는 객체는 무작위 값이 됩니다.

0과 사이의 임의 값을 생성하려면 n-1, 우리는 cstdlib의 기능을 사용할 수 있습니다 rand() 그리고 srand() 또는 에 정의된 표준 생성기를 사용하십시오. <random> C++11에 도입된 헤더.

 
에 대한 많은 대안이 있습니다 반복자를 다음으로 진행 r 직책:

⮚ 사용 std::advance

표준 알고리즘 std::advance 지정된 위치만큼 반복자를 진행하는 데 사용할 수 있습니다.

다운로드  코드 실행

⮚ 포인터 연산

다음 코드는 반복자에서 포인터 산술을 수행할 수 있으므로 작동합니다.

다운로드  코드 실행

⮚ ++ 연산자

또 다른 솔루션은 다음을 사용하는 것입니다. ++ 아래와 같이 지정된 위치만큼 반복자를 진행하려면 while 루프 내부에 연산자를 사용합니다.

다운로드  코드 실행

2. 사용 [] 운영자

멤버 함수를 사용할 수도 있습니다. operator[] 다음과 같은 시퀀스 컨테이너에서 제공 std::vector, std::array, std::deque 요소에 대해 연속적인 저장 위치를 사용합니다. 이 접근 방식은 다음과 같이 작동합니다. [] 연산자는 컨테이너의 지정된 위치에 있는 요소를 반환합니다.

다운로드  코드 실행

C++의 STL 컨테이너에서 임의의 값을 얻는 것이 전부입니다.