当前位置: 首页 > wzjs >正文

建筑公司网站设计思路泉州网站建站公司

建筑公司网站设计思路,泉州网站建站公司,网站建设论文的中期报告,佳天下装饰公司怎么样文章目录 前言一、顺序表实现栈二、链表实现栈三、CSTL中的栈四、C中的:和::的区别1. 单冒号(:)的用法​(1)初始化列表(构造函数)​​(2) ​继承声…

文章目录

  • 前言
  • 一、顺序表实现栈
  • 二、链表实现栈
  • 三、C++STL中的栈
  • 四、C++中的:和::的区别
    • 1. 单冒号(:)的用法
      • ​(1)初始化列表(构造函数)​
      • ​(2) ​继承声明
      • ​(3)访问控制符
      • ​(4)​位域(Bit-field)​
    • 2. 双冒号(::)的用法
      • ​(1)作用域解析
      • ​(2)静态成员访问
      • ​(3)命名空间访问​
      • ​(4)全局函数调用​
    • 3.核心区别与注意事项
    • 4.总结


前言

本文为《C++学习》的第3篇文章,今天学习栈。


一、顺序表实现栈

#include<iostream>
#include<stdexcept>using namespace std;template<typename T>
class Stack{
private:T *data;int size;int capacity;void resize();public:Stack() : data(new T[capacity]), size(0), capacity(10) {}~Stack();void push(T element);T pop();T top() const; int getSize() const;	
};template<typename T>
void Stack<T>::resize(){int newCapacity = capacity * 2;T *newData = new T[newCapacity];for(int i = 0; i < size; ++i){newData[i] = data[i];}delete[] data;data = newData;capacity = newCapacity;
}template<typename T>
Stack<T>::~Stack(){delete[] data;
}template<typename T>
void Stack<T>::push(T element){if(size == capacity){resize();}data[size++] = element;
}template<typename T>
T Stack<T>::pop(){if(size == 0){throw std::underflow_error("Stack is empty");}return data[--size];
}template<typename T>
T Stack<T>::top() const{if(size == 0){throw std::underflow_error("Stack is empty");}return data[size-1];
}template<typename T>
int Stack<T>::getSize() const{return size;
}int main(){Stack<int> myst;myst.push(12);myst.push(23);myst.push(34);cout << myst.top() << endl;myst.push(45);cout << myst.top() << endl;myst.pop();myst.pop();cout << myst.top() << endl;cout << myst.getSize() << endl;return 0;
}

二、链表实现栈

#include<iostream>
#include<stdexcept>using namespace std;template<typename T>
class Stack{
private:struct Node{T data;Node *next;Node(T d) : data(d), next(NULL) {}//在构造函数后使用单冒号,用于初始化类的成员变量};Node *head;int size;public:Stack() : head(NULL), size(0) {}~Stack();void push(T element);T pop();T top() const; int getSize() const;	
};template<typename T>
Stack<T>::~Stack(){while(head){Node *temp = head;head = head->next;delete temp; }
}template<typename T>
void Stack<T>::push(T element){Node *newNode = new Node(element);newNode->next = head;head = newNode;++size;
}template<typename T>
T Stack<T>::pop(){if(head == NULL){throw std::underflow_error("Stack is empty");} T result = head->data;Node *temp = head;head = head->next;delete temp;return result;
}template<typename T>
T Stack<T>::top() const{if(head == NULL){throw std::underflow_error("Stack is empty");} return head->data;
}template<typename T>
int Stack<T>::getSize() const{return size;
}int main(){Stack<int> myst;myst.push(12);myst.push(23);myst.push(34);cout << myst.top() << endl;myst.push(45);cout << myst.top() << endl;myst.pop();myst.pop();cout << myst.top() << endl;cout << myst.getSize() << endl;return 0;
}

三、C++STL中的栈

#include<iostream>    
#include<stack>      
using namespace std;/*
我们只需要记住四个常用的接口就好
判空;empty() 
入栈:push(value)
出栈:pop()
取顶:top()
*/int main(){stack<int> intstack;stack<double> doublestack;intstack.push(11); intstack.push(22); intstack.push(33); intstack.push(44);while(!intstack.empty()){cout << intstack.top() << " ";intstack.pop();} cout << endl;doublestack.push(1.1); doublestack.push(2.2); doublestack.push(3.3); doublestack.push(4.4);while(!doublestack.empty()){cout << doublestack.top() << " ";doublestack.pop();} cout << endl;return 0;
}  

四、C++中的:和::的区别

我们在这篇文章的末尾补充一个小问题,总结一下C++中的单冒号:和双冒号::的区别,这些区别大家不需要刻意去记,理解就行,平时在写代码的时候多留意多总结即可。

1. 单冒号(:)的用法

​(1)初始化列表(构造函数)​

在构造函数后使用冒号,用于初始化类的成员变量(尤其适用于const成员和引用类型):

class Test {
public:Test(int x) : m_x(x), m_const(100) {} // 初始化列表
private:int m_x;const int m_const;
};
  • ​特点:初始化顺序与成员声明顺序一致,而非初始化列表中的顺序;
  • ​必要性:const成员和引用类型必须通过初始化列表赋值。

​(2) ​继承声明

定义派生类时,冒号后声明基类和继承方式:

class Derived : public Base { // 公有继承Base类// 派生类成员
};

​(3)访问控制符

在类中声明public:、private:或protected:,表示后续成员的访问权限:

class MyClass {
public:    // 以下成员为公有int a;
private:   // 以下成员为私有int b;
};

​(4)​位域(Bit-field)​

在结构体或类中定义变量占用的比特位数:

struct BitField {unsigned int a : 4;  // a占4位unsigned int b : 8;  // b占8位
};

2. 双冒号(::)的用法

​(1)作用域解析

访问全局作用域、类作用域或命名空间中的成员:

int global = 10;class MyClass {
public:static void func();
};void MyClass::func() { // 类外定义成员函数::global = 20;     // 访问全局变量
}

​(2)静态成员访问

访问类的静态成员:

class Math {
public:static const double PI;
};
double pi = Math::PI; // 通过类名访问静态成员

​(3)命名空间访问​

指定命名空间内的元素:

std::cout << "Hello"; // 访问std命名空间中的cout

​(4)全局函数调用​

明确调用全局函数(避免与局部函数冲突):

void myFunc() { /* ... */ }int main() {::myFunc(); // 强制调用全局函数
}

3.核心区别与注意事项

在这里插入图片描述
易混淆场景示例 :

class Base {
public:Base(int x) : m_x(x) {}  // 冒号:构造函数初始化列表
};class Derived : public Base { // 冒号:继承声明
public:Derived() : Base(0), m_derived(0) {} static void func(); 
};void Derived::func() { // 双冒号:类外定义成员函数::printf("Global function"); // 双冒号:调用全局函数
}

4.总结

  • ​冒号(:)​:侧重声明阶段的逻辑控制(如初始化、继承关系、权限分组);
  • ​双冒号(::)​:侧重运行时的作用域解析(如明确函数或变量的归属)。

这就是今天的全部内容了,谢谢大家的观看,不要忘了给一个免费的赞哦!


文章转载自:

http://IIpIS1R4.rhjsx.cn
http://7UH4QD8z.rhjsx.cn
http://pXpVEzrR.rhjsx.cn
http://Kdt1tgaF.rhjsx.cn
http://RlQMLhAI.rhjsx.cn
http://RtyNd5nJ.rhjsx.cn
http://efiVzxFm.rhjsx.cn
http://7fuGd9bV.rhjsx.cn
http://aWFHlhae.rhjsx.cn
http://GLRi6Toe.rhjsx.cn
http://hRdovVYa.rhjsx.cn
http://9HeJefAG.rhjsx.cn
http://4CUZRdVu.rhjsx.cn
http://hJsb9HMC.rhjsx.cn
http://URWNPP6f.rhjsx.cn
http://Wk298eLw.rhjsx.cn
http://jHVk9BOR.rhjsx.cn
http://IkysGQY0.rhjsx.cn
http://RhE38oVV.rhjsx.cn
http://RMw7VurS.rhjsx.cn
http://OD8OeH8d.rhjsx.cn
http://jHp5PAQg.rhjsx.cn
http://akhv6wwJ.rhjsx.cn
http://eU0gmP6O.rhjsx.cn
http://vSF3EPNw.rhjsx.cn
http://7C8zFLbL.rhjsx.cn
http://9aHFG4CP.rhjsx.cn
http://Trv4hdMj.rhjsx.cn
http://T970QCjC.rhjsx.cn
http://WiLrSRKf.rhjsx.cn
http://www.dtcms.com/wzjs/658827.html

相关文章:

  • 购物网站建设好处wordpress 问答 主题 knowhow
  • 金山网站制作响应式网站设计图
  • 电子商城网站开发公司wordpress kallyas
  • 大家都用哪个网站做读书笔记各个做网站的有什么区别
  • 免费网站域名申请做调查用哪个网站
  • 做网站容易挣钱吗建安证查询网站
  • 公司建设网站的 计划书黄岩区建设规划局网站
  • 资海集团网站建设简洁的企业网站
  • 网站建设三站合一wordpress置顶失效
  • 六安网站推广wordpress custom login
  • 讯美深圳网站建设python做的网站
  • 用网站做淘宝客平台如何做推广
  • 网站建设最新教程wordpress娱乐主题yeti 1.9.2
  • 最大郑州网站建设公司石家庄学校网站建设
  • dw用层还是表格做网站快商务电子是学什么的
  • 网站宽度 超宽网站抓取压力高
  • 美食 网站模板wordpress 域名更改 页面链接
  • 做网站应达到什么效果如何建网址
  • 专做正品 网站iis wordpress 多站点
  • 网站网页制作公司一个网站的建设需要哪些流程图
  • 网站建设方案500字网页设计页面布局有哪些
  • 网站建设制作公司国内访问wordpress
  • 网页与网站设计什么是整体造型怎么创造软件app
  • 多少钱可以做网站果洛营销网站建设
  • visual studio2005做网站网站建设服务亮点
  • 建设用地规划公示在哪个网站查苏州建设工程材料信息价
  • 男女做爰视频免费网站怎样建一个自己的网站
  • 景德镇市城市建设规划网站建设企业网站源码
  • 对网站的建议专门下软件的app
  • 创建企业网站网站百度不收录