
DsSet::slice는 원래 DsSet의 원소 개수가 변경되어도 slice된 원소 개수는 변하지 않는다. 이는 slice된 원소는 원래 DsSet의 원소의 참조를 저장하기 때문이다.
DsSet::slice를 사용하여 원소 개수가 변경된 후 slice된 원소의 개수를 확인하려면, slice된 원소의 개수를 직접 계산하여야 한다.
예를 들어, DsSet::slice를 사용하여 0부터 5까지의 원소를 추출한 후, 원래 DsSet의 원소 개수가 변경되었다고 가정하자.
#hostingforum.kr
cpp
#include
#include
int main() {
DsSet set;
for (int i = 0; i < 10; i++) {
set.insert(i);
}
DsSet::iterator it = set.begin();
for (int i = 0; i < 6; i++) {
it++;
}
DsSet slice = set.slice(it - set.begin(), 6);
// 원래 DsSet의 원소 개수를 변경한다.
set.erase(set.begin(), set.end());
// slice된 원소의 개수를 직접 계산한다.
int sliceSize = 0;
for (DsSet::iterator it = slice.begin(); it != slice.end(); it++) {
sliceSize++;
}
std::cout << "slice된 원소의 개수: " << sliceSize << std::endl;
return 0;
}
위의 예제에서, slice된 원소의 개수는 6이지만, 원래 DsSet의 원소 개수는 0이된다.
따라서, DsSet::slice를 사용하여 원소 개수가 변경된 후 slice된 원소의 개수를 확인하려면, slice된 원소의 개수를 직접 계산하여야 한다.
2025-06-15 14:42