面试题答案
一键面试#include <iostream>
#include <vector>
// 定义一个简单的自定义类
class MyClass {
public:
MyClass(int value) : data(value) {}
int getData() const { return data; }
private:
int data;
};
// 模板函数,接受一个容器的常量引用
template<typename Container>
void performOperation(const Container& container) {
// 遍历容器元素
for (const auto& element : container) {
// 对每个元素执行特定操作,这里以打印为例
std::cout << element.getData() << " ";
}
std::cout << std::endl;
}
关键部分设计思路:
- 模板参数:
template<typename Container>
定义了一个模板参数Container
,这样可以处理不同类型的容器,确保泛型编程的兼容性。 - 常量引用:
const Container& container
使用常量引用接收容器,这样既可以避免容器拷贝,提高效率,又保证了函数不会修改传入的容器,实现类型安全。 - 范围 for 循环:
for (const auto& element : container)
使用范围 for 循环遍历容器元素。const auto&
确保element
是容器元素的常量引用,不会修改元素,且auto
会根据容器元素类型自动推导,处理不同元素类型的兼容性。在示例中,element
是MyClass
类型的常对象,调用的getData
函数也是const
成员函数,保证不会修改对象状态。