Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::basic_...insert_range(3) C++ Standard Libarystd::basic_...insert_range(3)

NAME
       std::basic_string::insert_range - std::basic_string::insert_range

Synopsis
	  template<	   container-compatible-range<CharT>	    R	     >
       (since C++23)
	  constexpr iterator insert_range( const_iterator pos, R&& rg );

	  Inserts characters from the range rg before  the  element  (if  any)
       pointed by pos.

	  Equivalent to

	return insert(pos - begin(),
	    std::basic_string(
		std::from_range,
		std::forward<R>(rg),
		get_allocator())
	);

	  If pos is not	a valid	iterator on *this, the behavior	is undefined.

Parameters
	  pos -	iterator before	which the characters will be inserted
	  rg  -	a container compatible range

Return value
	  An  iterator which refers to the first inserted character, or	pos if
       no characters
	  were inserted	because	rg was empty.

Complexity
	  Linear in size of rg.

Exceptions
	  If std::allocator_traits<Allocator>::allocate	throws	an  exception,
       it is rethrown.

	  If  the  operation  would  result  in	 size()	 >  max_size(),	throws
       std::length_error.

	  If an	exception is thrown for	any reason, this function has  no  ef-
       fect (strong
	  exception safety guarantee).

Notes
	      Feature-test macro       Value	Std		      Feature
	  __cpp_lib_containers_ranges  202202L	(C++23)	 member	functions that
       accept container
						      compatible range

Example
       // Run this code

	#include <cassert>
	#include <iterator>
	#include <string>

	int main()
	{
	    const auto source =	{'l', 'i', 'b',	'_'};
	    std::string	target{"__cpp_containers_ranges"};
	    //			      ^insertion will occur
	    //			       before this position

	    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");
	    //			    ^^^^
	}

See also
	  insert inserts characters
		 (public member	function)

http://cppreference.com		  2024.06.10	 std::basic_...insert_range(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::u32string::insert_range&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help