ZBLOG

std::vector 封装类似QVector 包括 isEmpty pop_front size clear push begin end iterator

如果你想将 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;
  }
}

上述示例代码中,使用模板类 MyVectorstd::vector 进行了封装,提供了类似于 QVector 的操作方法,包括 isEmpty()pop_front()size()clear()push()begin()end()。你可以根据自己的需求进行修改和扩展。

希望这个示例能够帮助你理解如何封装类似于 QVector 的容器并添加常用操作方法。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=17651

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?