C++初识

本文深入探讨C++中的命名空间概念及其使用方法,包括命名空间的定义、使用方式及注意事项。同时,详细讲解了C++标准输入输出流cout和cin的特性与操作,以及它们与传统printf和scanf的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、命名空间

1、命名空间的定义
namespace 命名空间名称
{
各个成员
}

2、命名空间的使用
(1)命名空间的名字+域解析符(::)
例如:
Name A :: 命名空间中的成员;
(2)用using打开要使用的命名空间
例如:
using namespace NameA ;
(2)用using打开要使用的命名空间的部分成员
using NameA :: g_a;

(3)怎么使用命名空间与默认命名空间都有的变量,怎么使用默认命名空间中的变量
直接使用::
(4)
注意://using只在当前作用域有效

#include <stdio.h>

namespace NameA
{
    int g_a;
    int add(int a,int b)
    {
        return a+b;
    }
}

namespace NameB
{
    int g_a;
    int g_b;
    int mux(int a,int b)
    {
        return a-b;
    }
}

int g_b;

//使用命名空间名字加上域解析符::使用
int main1()
{
    NameA :: g_a = 10;
    printf("1+2 = %d\n",NameA :: add(1,2));
    printf("3-2 = %d\n",NameB :: mux(3,2));
    printf("NameA g_a = %d\n",NameA :: g_a);
    printf("NameB g_a = %d\n",NameB :: g_a);

    return 0;
}

//用using打开要使用的命名空间
int main2()
{
    using namespace NameA;
    g_a = 10;
    printf("1+2 = %d\n",add(1,2));
    printf("3-2 = %d\n",NameB :: mux(3,2));
    printf("NameA g_a = %d\n",NameA :: g_a);
    printf("NameB g_a = %d\n",NameB :: g_a);

    return 0;
}

//用using打开要使用的命名空间中的部分成员
int main3()
{
    using NameA :: g_a;
    g_a = 10;
    printf("1+2 = %d\n",NameA :: add(1,2));
    printf("3-2 = %d\n",NameB :: mux(3,2));
    printf("NameA g_a = %d\n",NameA :: g_a);
    printf("NameB g_a = %d\n",NameB :: g_a);

    return 0;
}

//命名空间与默认命名空间都有的变量,怎么使用默认命名空间中的变量
int main()
{
    using NameB :: g_b;
    ::g_b = 10;
    printf("3-2 = %d\n",NameB :: mux(3,2));
    printf("g_b = %d\n",::g_b);
    printf("NameB g_b = %d\n",NameB :: g_b);

    return 0;
}

//using只在当前作用域有效

2、头文件

1、早起头文件
无引用命名空间,c++和c的头文件一样,类似 xxx.h
2、引用命名空间后
为了与之前的软件兼容,因此保留了大部分从前的头文件,同时,对之前所有的库进行重写,将所有的内容纳入到统一的命名空间(std)下。
3、为了与无命名空间的头文件区分:
有命名空间的头文件
(1)C,头文件后缀.h去除,在前面加上c stdio.h----->cstdio
(2)c++,直接头文件后缀.h去除,iostream.h------>iostream

#include <iostream>


int main()
{
    //c++允许在for循环中定义变量,且变量只在当前循环中有效
    for(int i=0;i < 10; i++)
    {
        printf("i = %d\n",i);
    }

    return 0;
}

3、标准输入输出

1、标准输出:cout
cout << a << endl;

与printf 的区别:
printf是函数,cout 是一个变量
<< 左移操作符和cout 结合后功能发生了改变,可以理解为数据流向
数据从右边流向左边。
左边是:屏幕,右边是数值。
endl是一个换行,在c++中对于c的的转义符也能使用
Cout 支持链式操作,遵循先来后到的规则
cout 的优点:可以自动识别基础变量类型,缺点:效率大约比printf低20倍

2、标准输入:cin
cin >> a;
数据流向,从左往右。
键盘输入值保存到变量中。
cin 支持链式操作,遵循先来后到的规则,和C一样,用换行和空格区分

3、注意:
cin 和 cout 必须写在每行的起始位置。
不能写成 a >> cout和 a << cin

#include <iostream>

using namespace std;

//标准输出
int main1()
{
   int    a   = 10;
   double b   = 2.15;
   char   c   = 'p';
   float  d   = 3.14f;
   char str[20] = "a good boy!";

   cout << "a = " << a << endl;
   cout << "b = " << b << endl;
   cout << "c = " << c << endl;
   cout << "d = " << d << endl;
   cout << "str = " << str << endl;

   return 0;
}

using namespace std;

//标准输入
int main()
{
    int a;
    double b;
    char c;
    float d;
    char str[20];

    cout << "请输入a,b,c,d,str对应数值: ";
    cin >> a >> b >> c >> d >> str;

    cout << "a = " << a << endl;
    cout << "b = " << b << endl;
    cout << "c = " << c << endl;
    cout << "d = " << d << endl;
    cout << "str = " << str << endl;

    return 0;
}

4、BOOL,寄存器变量,三目运算符

BOOL :只有2个值,true(1),false(0)
真是1,假是0。
非0 为真,0为假。

寄存器变量
register,
寄存器没有地址,在c中不能对寄存器变量取地址,在c++中可以取地址,但变量就不是寄存器变量了

三目运算符:
在c中三目运算符返回的是值,因此不能作为左值
在c++中三目运算符返回的是空间,可以作为左值使用,但如果比较结果是一个常量就不能使用。
1、怎么在c中实现c++中的效果
*(a>b?&a:&b) = 100;

#include <iostream>

using namespace std;

int main()
{
    int a =10;
    int b =30;
    int c = a>b?a:b;

    cout << c << endl;
    a>b?a:b = 100;
    cout << b << endl;


    return 0;
}
内容概要:该论文聚焦于T2WI核磁共振图像超分辨率问题,提出了一种利用T1WI模态作为辅助信息的跨模态解决方案。其主要贡献包括:提出基于高频信息约束的网络框架,通过主干特征提取分支和高频结构先验建模分支结合Transformer模块和注意力机制有效重建高频细节;设计渐进式特征匹配融合框架,采用多阶段相似特征匹配算法提高匹配鲁棒性;引入模型量化技术降低推理资源需求。实验结果表明,该方法不仅提高了超分辨率性能,还保持了图像质量。 适合人群:从事医学图像处理、计算机视觉领域的研究人员和工程师,尤其是对核磁共振图像超分辨率感兴趣的学者和技术开发者。 使用场景及目标:①适用于需要提升T2WI核磁共振图像分辨率的应用场景;②目标是通过跨模态信息融合提高图像质量,解决传统单模态方法难以克服的高频细节丢失问题;③为临床诊断提供更高质量的影像资料,帮助医生更准确地识别病灶。 其他说明:论文不仅提供了详细的网络架构设计与实现代码,还深入探讨了跨模态噪声的本质、高频信息约束的实现方式以及渐进式特征匹配的具体过程。此外,作者还对模型进行了量化处理,使得该方法可以在资源受限环境下高效运行。阅读时应重点关注论文中提到的技术创新点及其背后的原理,理解如何通过跨模态信息融合提升图像重建效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值