如果你想将 std::vector 封装成类似于 QVector 的自定义容器,并提供一些常用操作方法,可以考虑如下的示例代码:
#include <iostream>
#include <vector>
template<typename T>
class MyVector {
private:
std::vector<T> data;
public:
bool isEmpty() const {
return data.empty();
}
void push(const T& value) {
data.push_back(value);
}
void pop_front() {
if (!isEmpty()) {
data.erase(data.begin());
}
}
int size() const {
return data.size();
}
void clear() {
data.clear();
}
typename std::vector<T>::iterator begin() {
return data.begin();
}
typename std::vector<T>::iterator end() {
return data.end();
}
};
int main() {
MyVector<int> myVec;
myVec.push(1);
myVec.push(2);
myVec.push(3);
std::cout << "Size: " << myVec.size() << std::endl;
for(auto it = myVec.begin(); it != myVec.end(); ++it) {
std::cout << *it << " ";
}
std::cout << std::endl;
myVec.pop_front();
std::cout << "Size after pop_front(): " << myVec.size() << std::endl;
myVec.clear();
if(myVec.isEmpty()) {
std::cout << "myVec is empty" << std::endl;
} else{
std::cout<< "myVec is not empty" <<std::endl;
}
}
上述示例代码中,使用模板类 MyVector 对 std::vector 进行了封装,提供了类似于 QVector 的操作方法,包括 isEmpty()、pop_front()、size()、clear()、push()、begin() 和 end()。你可以根据自己的需求进行修改和扩展。
希望这个示例能够帮助你理解如何封装类似于 QVector 的容器并添加常用操作方法。
内容由零声教学AI助手提供,问题来源于学员提问




