English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
C ++ set lower_bound()함수는 매개변수에 전달된 val과 동일한 키를 가리키는 이터너리를 반환하는 함수입니다.
설정 컨테이너에 val이 없으면, val보다 큰 다음 요소를 가리키는 이터너리를 반환합니다.
iterator lower_bound (const value_type& val); //C++ 11 이전 iterator lower_bound (const value_type& val); //C++ 11시작 const_iterator lower_bound (const value_type& val) const; //C++ 11시작
val: 설정 컨테이너에서 검색할 값.
그것은 설정 컨테이너에서 값을 가리키는 이터너리를 반환합니다. 이 이터너리는 매개변수에 전달된 val과 동일합니다. 해당 요소가 없으면 end()를 반환합니다.
크기는 대수적입니다.
변경이 없습니다.
컨테이너는 접근됩니다(상수와 비상수 버전 모두 컨테이너를 변경할 수 없습니다).
集合의 요소에 동시에 접근하는 것은 안전합니다.
예외가 발생하면 컨테이너에 변경이 없습니다.
나는 주어진 키의 하한을 얻는 간단한 예제를 보여드리겠습니다:
#include <iostream> #include <set> using namespace std; int main(void) { set<char> m = {'a','b','c','d','e'}; auto it = m.lower_bound('c'); cout << "하한 (=) " << *it; return 0; }
출력:
하한 (=) c
위의 예제에서 c의 하한은 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 contains:"; for (set<int>::iterator it=myset.begin(); it!=myset.end(); ++it) cout << ' ' << *it; cout << '\n'; return 0; }
출력:
myset contains: 10 20 70 80 90
위의 예제에서 delete() 함수는 set의 요소를 하한(=)에서 상한(>)까지 지우고 나머지를 출력합니다.
다음 간단한 예제를 보겠습니다:
#include <set> #include <iostream> using namespace std; 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.lower_bound( 20); cout << "집합 s1의 키는20의 요소는: " << *s1_RcIter << "." << endl; s1_RcIter = s1.lower_bound( 40); // 일치하는 키가 없으면 end()을 반환 if ( s1_RcIter == s1.end()); cout << "집합 s1키 값이 없는 요소가 있습니다:40의 요소.\n" << endl; else cout << "집합은 s1하고 키는40의 요소는: " << *s1_RcIter << "." << endl; //집합에서 특정 위치의 요소를 찾을 수 있습니다 //해제된迭代기로 위치를 찾아서 s1_AcIter = s1.end()); s1_AcIter--; s1_RcIter = s1.lower_bound( *s1_AcIter); cout << "s1의 요소와 마지막 요소의 키가 일치하는 요소는:" << *s1_RcIter << "." << endl; return 0; }
출력:
집합 s1의 키는20의 요소는: 20. 집합 s1키 값이 없는 요소가 있습니다:40의 요소. s1의 요소와 마지막 요소의 키가 일치하는 요소는:30.
다음 간단한 예제를 보겠습니다:
#include<set> #include<iostream> using namespace std; int main() { set<int> mp; // 무작위 순서로 요소를 삽입 mp.insert( 2 ); mp.insert( 1 ); mp.insert( 5 ); mp.insert( 4 ); cout << "요소는: \n"; for (auto it = mp.begin(); it != mp.end(); it++) { cout << (*it << endl; } //때2존재하면 auto it = mp.lower_bound(2); cout << "키2의 하한은 "; cout << (*it << endl; //존재하지 않으면3때 //지시3의 다음 큰 it = mp.lower_bound(3); cout << "키3의 하한은 "; cout << (*it << endl; // 초과하면6 it = mp.lower_bound(6); cout << "키6의 하한은 "; cout << (*it); return 0; }
출력:
요소는: 1 2 4 5 키2의 하한은 2 키3의 하한은 4 키6의 하한은 4
위의 예제에서, 우리가 컨테이너의 값을 초과하는 경우나 다른 말로 하면 set 컨테이너에 해당 값을 가지고 있지 않을 때, 그는 end로 돌아옵니다.