c++使用模板实现交换字符串
时间: 2024-10-22 07:11:07 浏览: 23
在C++中,模板是一种强大的工具,可以用于创建通用的函数或数据结构,适用于不同类型的数据。为了交换两个字符串,你可以使用模板函数结合引用传递来避免复制。下面是一个简单的例子:
```cpp
#include <string>
// 使用模板函数交换两个字符串
template<typename T>
void swap(T& a, T& b) {
T temp = a;
a = b;
b = temp;
}
// 特化模板以处理std::string类型的交换
template<>
void swap<std::string>(std::string& a, std::string& b) {
using std::swap; // 避免命名冲突
swap(a.begin(), b.begin()); // 直接交换内部字符指针
}
// 示例用法
int main() {
std::string str1 = "Hello";
std::string str2 = "World";
std::cout << "Before swap: str1 = " << str1 << ", str2 = " << str2 << '\n';
swap(str1, str2); // 调用特化的模板函数
std::cout << "After swap: str1 = " << str1 << ", str2 = " << str2 << '\n';
return 0;
}
```
在这个例子中,`swap`函数首先是一个通用的模板函数,然后我们特别地针对`std::string`进行了特化,因为直接交换其内部字符指针更为高效。
阅读全文