c++回顾总结(一)

1,编译:C++是一种编译语言。
    转化过程由一个称为编译器的程序来做,
    计算机可执行的东西称为可执行代码,目标代码,或者机器代码。目标代码的后缀window 是.obj  Unix是.o
2,过程:C++源代码:hello_world.cpp  -> C++编译器  -> 目标代码:hello_world.obj  -> 链接器  -> 可执行程序:hello_world.exe
IDE(集成开发环境):一般包含编辑器,编译器,调试器和图形用户界面。
3,内存中的比特的含义完全依赖于他所访问的类型。
4,记得初始化变量是一个编程的好习惯。
5,c++中类型的安全转化:
    bool -->char    bool-->int    bool-->double   char-->int   char-->double   int-->double
6,c++中也允许不安全转换。(下面是编译器接受的不安全转化,也称为窄化)
    double -->int   double-->char   double-->bool   int-->char   int-->bool   char-->bool
7,程序的组织手段主要是把一个大的计算任务划分为许多小任务,这一技术主要包括两类方法:1>抽象2>分治
8,一个constexpr 符号的常量必须给定一个在编译时已知的值。(c++98不支持constexpr)
    若某个变量在初始化时的值在编译时未知,但初始化后也绝不改变,c++提供了第二种形式的常量(const)
    例如: int n;
        constexpr int c1 = max + 19;
    //    constexpr int c2 = n + 7;        //这句话是错误的!
        const  int c2 = n + 7;            //这句话是正确的,但是c2的值是不可以改变的。   例如在给c2赋新值就是错误的。
注意:编程能够让你理解世界上没有绝对的事情。
9,switch>..case语句中case语句中的值必须是常量,而且不能重复。
10,使用函数的优点
    1>实现计算逻辑的分离
    2>使代码更清晰
    3>利用函数,使同样的代码在程序中可以被多次使用
    4>减少程序调试的工作量
c++提供了一种与函数定义分离的方法来显示函数的信息,称为函数声明
11,vector :是一组可以通过索引来访问的顺序存储的数据元素。(python中字典相似)
       vector(向量): C++中的一种数据结构,确切的说是一个类.它相当于一个动态的数组
       当程序员无法知道自己需要的数组的规模多大时,用其来解决问题可以达到最大节约空间的目的.
       详细介绍网址:https://blog.csdn.net/hancunai0017/article/details/7032383

    vectorv"知道自己的大小",即vector不仅存储数据的元素,也存储数据的个数。
    表示方式:vector<int>v = {2,3,4,5,6};  //定义一个vector需要确定vector的数据类型和始集。
    特殊:给定大小的vector被定义后,给每个元素赋予不同的缺省值。
        例如:vector <int> vi(6);    //vector 的6个整形元素的初始化为0;
                  vector<string>vs(4);     //vector的4个字符串元素的初始化为“”(空字符串)
    遍历vector的简单方式:
        vector<int> v = {2,3,4,5,6};
        for(int x:v)
             cout<<x<<'\n';
    vector空间增长:vector一般是从一个空的vector开始,逐步填充数据,函数是push_back(),将一个新元素
                   添加到vector的最后一个元素。

12,C++中的using namespace std的作用
    namespace:是指标识符的各种可见范围。
    C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
    C++标准为了和C区别开,也为了正确地使用命名空间,规定头文件不使用后缀.h
    使用<iostream>时,该头文件没有定义全局命名空间,必须使用namespace std,这样才能使用类似于cout这样的C++标识符。
    详细理解网址:https://blog.csdn.net/slj_win/article/details/26351419
    

#include <iostream>
#include "stdlib.h"
#include "stdio.h"
#include "string.h"
#include <math.h>
#include<vector>
using namespace std;
int square(int i);
int area(int length,int width);
int main() {
    /*
    std::cout << "Hello, World!" << std::endl;
    std::cout << "请输入你的姓名:\n";   //请输入你的姓名
    std::string  first_name,second_nam;
    int ma = 60;
    std::cin >> first_name >> second_nam;
    std::cout <<"hello "<<first_name<<" "<<second_nam<<" 你的成绩是"<<ma<<"!\n";

    //c++中的字符串拼接直接进行拼接即可
    std::string f1 = first_name + " " + "sdas";
    std::cout<<"拼接后的字符是"<<f1;
    printf("\n");

    std::string previous = " ";
    std::string current;
    int number_word = 0;
    while(std::cin>>current) {
        ++number_word;
        if (previous == current)
            std::cout << "word number" <<" "<< number_word << " "<< "repeated:" << current << "\n";
        previous = current;
    }

    char c = 'x';
    int i1 = c;
    int i2 = 'x';
    char c2 = i1;
    std::cout<< c << ' ' << i1 << ' ' << c2 << ' ' << i2 <<'\n';
    double x{2.7};
    int y(x);                //将double型2.7窄化为2
    int a{1000};             //本IDE窄化出错结果不显示
    char b = a;
    std::cout<<y<<' '<<b<<std::endl;


    constexpr int max = 100;
    int n;
    constexpr int c1 = max + 19;
//    constexpr int c2 = n + 7;        //这句话时错误的!
    const  int c2 = n + 7;
    std::cout<<c1<<' '<<c2<<"\n"<<std::endl;

    for(int i=0 ;i<10;i++) {
//        std::cout << i << '\t' << pow(i,2) << '\n';
        std::cout << i << '\t' << square(i) << '\n';

    }
    string word;
    std::vector<string> words;
    while (cin>>word){
        if(word == "exit")
            break;
        words.push_back(word);
    }

    for (int i = 0; i <words.size();++i) {
        cout<<words[i]<<"\n";
    }
     */


    cout<<"面积二:"<<area(-1,4)<<'\n';
//    cout<<"面积一:"<<area(3,4)<<'\n';
    return 0;

}

int square(int i){
    int c;
    c=i*i;
    return c;
}

int area(int length,int width){
    if(length<=0||width<=0)
        perror("error");
    return length*width;

}

出现问题:对perror函数不太明确

    cout<<"面积二:"<<area(-1,4)<<'\n';
//    cout<<"面积一:"<<area(3,4)<<'\n';
int area(int length,int width){
    if(length<=0||width<=0)
        perror("error");
    return length*width;
}

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值