English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set upper_bound()함수는 매개변수에 전달된 val보다 큰 set 컨테이너의 값에 대한 이터레이터를 반환하는 함수입니다.
iterator upper_bound (const value_type& val) const; //C++ 11 이전 iterator upper_bound (const value_type& val); //C++ 11 이후 const_iterator upper_bound (const value_type& val) const; //C++ 11 이후
val:집합 컨테이너에서 검색할 값을
그는 매개변수에 전달된 val보다 큰 set 컨테이너의 값에 대한 이터레이터를 반환합니다. 그러나 이러한 요소가 없다면 end()을 반환합니다.
크기는 대수적입니다.
변경이 없습니다.
컨테이너가 접근된다(상수와 상수가 아닌 버전 모두 컨테이너를 변경할 수 없습니다).
집합의 요소에 동시에 접근하는 것은 안전합니다.
예외가 발생하면, 컨테이너에 어떤 변경도 없습니다.
나는 주어진 값을 상한으로 가져오는 간단한 예제를 보여주겠습니다:
#include <iostream> #include <set> using namespace std; int main(void) { set<char> m = {'a', 'b', 'c', 'd'}; auto it = m.upper_bound('b'); cout << "b의 상한은 (>): " << *it << endl; return 0; }
출력:
b의 상한은 (>): c
위의 예제에서, 요소 b의 상한을 찾으려고 시도할 때, 그는 요소 b의 큰 값을 반환합니다. 즉, c
나는 간단한 예제를 보여주겠습니다. set의 요소를 하한에서 상한까지 지우기:
#include <iostream> #include <set> using namespace std; int main () { set<int> myset; set<int>::iterator itlow,itup; for (int i=1; i<10; i++) myset.insert(i*10); // 10 20 30 40 50 60 70 80 90 itlow=myset.lower_bound(30); // ^ itup=myset.upper_bound(60); // ^ myset.erase(itlow,itup); // 10 20 70 80 90 std::cout << "myset이 포함합니다:"; for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it) cout << ' ' << *it; cout << '\n'; return 0; }
출력:
myset은 포함합니다: 10 20 70 80 90
위의 예제에서 erase() 함수는 set의 요소를 하한(=)에서 상한(>)까지 제거하고 나머지를 출력합니다.
간단한 예제를 보겠습니다:
#include<iostream> #include<set> using namespace std; int main() { // 컨테이너 초기화 set<int> mp; // 랜덤 순서로 요소를 삽입합니다 mp.insert( 12 ); mp.insert( 11 ); mp.insert( 15 ); mp.insert( 14 ); // 그때11존재하면 auto it = mp.upper_bound(11); cout << "키11최댓값은 "; cout << (*it << endl; // 그때13존재하지 않으면 it = mp.upper_bound(13); cout << "키13최댓값은 "; cout << (*it << endl; // 그때17최대 키 값을 초과하면, 크기순으로 // mp의 반환 값은 키로, 값은 0입니다. it = mp.upper_bound(17); cout << "키17최댓값은 "; cout << (*it); return 0; }
출력:
키11최댓값은 12 키13최댓값은 14 키17최댓값은 4
위의 예제에서, 집합 컨테이너에 존재하지 않지만 최대 값보다 작은 값을 탐색할 때, 더 큰 값을 반환합니다. 즉, 탐색하려는 값의 최댓값은13최댓값에 도달하면, 반환됩니다14집합에서 존재하지 않고 컨테이너의 최대 값을 초과하는 값을 탐색할 때, end()로 돌아갑니다.
간단한 예제를 보겠습니다:
#include <set> #include <iostream> int main( { using namespace std; set<int> s1; set<int> :: const_iterator s1_AcIter, s1_RcIter; s1.insert( 10 ); s1.insert( 20 ); s1.insert( 30 ); s1_RcIter = s1.upper_bound( 20 ); cout << "집합 s1의 키가20의 첫 번째 요소는: " << *s1_RcIter << "." << endl; s1_RcIter = s1.upper_bound( 30 ); // 일치하는 키를 찾지 못하면 end()을 반환합니다 if ( s1_RcIter == s1.end() cout << "집합 s1키가 요소보다 큰 키가 없습니다 30. << endl; else cout << "키> 40의 집합 s1요소는: " << *s1_RcIter << "." << endl; //집합에서 특정 위치의 요소를 찾을 수 있습니다 //사용하여 디테리어리제이션된 이터레이터로 주소를 찾습니다 s1_AcIter = s1.begin( ); s1_RcIter = s1.upper_bound( *s1_AcIter ); cout << "s1의 첫 번째 요소의 키가 " << endl << "s1의 초기 요소는: " << *s1_RcIter << "." << endl; return 0; }
출력:
집합 s1의 키가20의 첫 번째 요소는: 30. 집합 s1키가 요소보다 큰 키가 없습니다 30. s1의 첫 번째 요소의 키가 s1의 초기 요소는: 20.