C++实战:手撕类似于vector的容器(逆序算法、排序算法等)

devtools/2024/12/22 10:55:15/

文章目录速览

  • 1、使用C++泛型编程实现类似于vector的容器类ArrContainer

1、使用C++泛型编程实现类似于vector的容器类ArrContainer

直接上代码:可作读者参考

#pragma once
#include <exception>
template<typename T>
class ArrContainer
{
private:T* m_data; //存放数据int m_iCap; //容器的容量int m_iLen; //容器中元素的数量T* m_pHead; //头指针T* m_pRear; //尾部指针
public:ArrContainer() {m_iCap = 100;m_data = new T[m_iCap];m_iLen = 0;m_pHead = m_pRear = nullptr;}ArrContainer(int iLen){if (iLen < 0){m_data = nullptr;m_pHead = nullptr;m_pRear = nullptr;m_iLen = 0;m_iCap = 0;}m_iLen = iLen;}ArrContainer(T* data, int iLen){//step01: Judge the parameters whether are illegalif (nullptr == data || iLen <= 0){m_data = nullptr;m_pHead = nullptr;m_pRear = nullptr;m_iCap = 0;m_iLen = 0;return;}//step02: Allocate memory for datam_iCap = iLen + 100;m_iLen = iLen;m_data = new T[m_iCap];//step03: Copy datafor (int i = 0; i < m_iLen; ++i){m_data[i] = data[i];}m_pHead = &m_data[0];m_pRear = &m_data[m_iLen - 1];}~ArrContainer(){if (m_data != nullptr){delete[] m_data;m_data = nullptr;}}
public:bool push_back(const T& elem){if (m_iLen < m_iCap){m_data[m_iLen - 1] = elem;}m_pRear++;}T& operator[](int index){if (index < 0 || index >= m_iLen){exit(-1);}return m_data[index];}int size(){return m_iLen;}int capacity(){return m_iCap;}bool resize(int iLenNew){return false;}// 逆序算法bool reverse(){T tmp;while (m_pHead < m_pRear){tmp = *m_pHead;*m_pHead = *m_pRear;*m_pRear = tmp;m_pHead++;m_pRear--;}m_pHead = &m_data[0];m_pRear = &m_data[m_iLen - 1];return true;}
};

http://www.ppmy.cn/devtools/144347.html

相关文章

前端实习近期小结

有一小段时间没有更新了&#xff0c;年前的业务需求比较多而且急&#xff0c;今日凌晨&#xff08;2点多还在修改、提交代码到库&#xff09;还好这次是远程办公&#xff0c;忙完还可以立马洗澡休息.. 忙里偷闲&#xff0c;更新一下前端实习近况吧。现在写这篇博客的心情也比较…

Bootstrap 表格

Bootstrap 表格 引言 Bootstrap 是一个流行的前端框架&#xff0c;它提供了一套丰富的工具和组件&#xff0c;用于快速开发响应式和移动设备优先的网页。在本文中&#xff0c;我们将重点讨论 Bootstrap 中的表格组件&#xff0c;包括其基本结构、样式以及如何使用 Bootstrap …

问题:Flask应用中的用户会话(Session)管理失效

我来分享一个常见的Python Web开发问题&#xff1a; 问题&#xff1a;Flask应用中的用户会话(Session)管理失效 这是一个在Flask开发中经常遇到的问题。当用户登录后&#xff0c;有时会话会意外失效&#xff0c;导致用户需要重复登录。 解决方案&#xff1a; 1. 首先&#…

solon 集成 activemq-client (sdk)

原始状态的 activemq-client sdk 集成非常方便&#xff0c;也更适合定制。就是有些同学&#xff0c;可能对原始接口会比较陌生&#xff0c;会希望有个具体的示例。 <dependency><groupId>org.apache.activemq</groupId><artifactId>activemq-client&l…

[ThinkPHP]5.0.23-Rce 1

[ThinkPHP]5.0.23-Rce 1 根据题目知道这是一个5.0.23的PHP RCE&#xff0c;话不多说直接上扫描器 检测出Payload url地址&#xff1a; ?scaptcha&test-1 Post表单参数: _method__construct&filter[]phpinfo&methodget&server[REQUEST_METHOD]1HackBar构造p…

官方发布:2025年期刊分区表已收录中国科技期刊

随着众多中国科技期刊被纳入国际期刊数据库&#xff0c;它们正成为我国科研成果走向国际舞台的重要推手。 这不仅提升了这些期刊的国际影响力&#xff0c;也为全球科研人员提供了一个了解中国科研进展的窗口。 刚刚&#xff0c;中科院分区表官方发布了整理自2024年度期刊引证报…

【k8s】访问etcd

1. 配置 export.sh export ETCDCTL_API3 # Kubernetes 1.13 使用 API v3 export ETCDCTL_ENDPOINTShttps://[2023:145:246:270::3]:2379 # etcd API endpoint&#xff0c;通常为集群内的 etcd 服务地址 export ETCDCTL_CACERT/etc/kubernetes/certs/ca.crt # CA 证书文件 …

复盘:“辩论赛”复盘

这个小活动整个下来&#xff0c;我是按照“策划-执行-总结-复盘“这个顺序来过的&#xff1b; 在策划上&#xff1a; 首先&#xff0c;针对这个论题&#xff0c;我其实很清楚有很多问题&#xff0c;比如引起逆反心理&#xff0c;没想到还有不少人参与。 其次&#xff0c;针对这…