用c++实现void swap( basic_string &str );
时间: 2024-05-06 09:15:26 浏览: 63
用标准c++实现string与各种类型之间的转换
在 C++ 中,我们可以使用模板类 `std::basic_string` 来表示字符串,其定义如下:
```cpp
template<
class CharT,
class Traits = std::char_traits<CharT>,
class Allocator = std::allocator<CharT>
> class basic_string;
```
其中,`CharT` 表示字符类型,`Traits` 表示字符类型的特性,`Allocator` 表示分配器类型。
要实现 `void swap( basic_string &str )` 函数,我们可以直接调用 `std::swap` 函数,其定义如下:
```cpp
namespace std {
template<class T> void swap(T& a, T& b) noexcept; // C++11 起
}
```
因此,实现 `void swap( basic_string &str )` 函数的代码如下:
```cpp
template<typename CharT, typename Traits, typename Allocator>
void swap(basic_string<CharT, Traits, Allocator>& str) {
std::swap(str, basic_string<CharT, Traits, Allocator>{});
}
```
这里使用了移动构造函数,将一个“空”字符串与 `str` 进行交换,达到释放 `str` 的目的。
阅读全文