std::basic_string<CharT,Traits,Allocator>:: insert_range
| Classes | ||||
|
(C++17)
|
||||
|
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
template
<
container-compatible-range
<
CharT
>
R
>
constexpr iterator insert_range ( const_iterator pos, R && rg ) ; |
(C++23 이후) | |
rg 범위의 문자들을 pos 가 가리키는 요소(존재하는 경우) 앞에 삽입합니다.
다음과 동일함
return insert(pos - begin(), std::basic_string( std::from_range, std::forward<R>(rg), get_allocator()) );
만약 pos 가 * this 에 대한 유효한 반복자가 아니라면, 동작은 정의되지 않습니다.
목차 |
매개변수
| pos | - | 문자가 삽입될 위치 앞의 반복자 |
| rg | - | 컨테이너 호환 범위 |
반환값
삽입된 첫 번째 문자를 참조하는 반복자, 또는 pos 가 비어 있어서 문자가 삽입되지 않았을 경우 rg 입니다.
복잡도
크기 rg 에 선형적입니다.
예외
만약 std:: allocator_traits < Allocator > :: allocate 가 예외를 던지면, 해당 예외가 재던져집니다.
만약 연산으로 인해
size()
가
max_size()
를 초과하게 될 경우,
std::length_error
를 발생시킵니다.
어떤 이유로든 예외가 발생하면, 이 함수는 아무런 효과를 가지지 않습니다( strong exception safety guarantee ).
참고 사항
| 기능 테스트 매크로 | 값 | 표준 | 기능 |
|---|---|---|---|
__cpp_lib_containers_ranges
|
202202L
|
(C++23) | 컨테이너 호환 범위 를 허용하는 멤버 함수 |
예제
#include <cassert> #include <iterator> #include <string> int main() { const auto source = {'l', 'i', 'b', '_'}; std::string target{"__cpp_containers_ranges"}; // ^삽입이 이 위치 앞에서 발생함 // const auto pos = target.find("container"); assert(pos != target.npos); auto iter = std::next(target.begin(), pos); #ifdef __cpp_lib_containers_ranges target.insert_range(iter, source); #else target.insert(iter, source.begin(), source.end()); #endif assert(target == "__cpp_lib_containers_ranges"); // ^^^^ }
참고 항목
|
문자 삽입
(public member function) |