C++基础项目结构

以排序算法讲解C++基础项目结构

目录

项目结构建议:

[1. SortAlgorithms.h​ (头文件 - 函数声明)](#1. SortAlgorithms.h (头文件 - 函数声明))

[2. SortAlgorithms.cpp​ (源文件 - 函数定义)](#2. SortAlgorithms.cpp (源文件 - 函数定义))

[3. main.cpp​ (主程序文件)](#3. main.cpp (主程序文件))

[Visual Studio中的文件组织:](#Visual Studio中的文件组织:)

文件结构:

[在Visual Studio中创建步骤:](#在Visual Studio中创建步骤:)

文件类型的说明:

头文件保护(#ifndef/#define/#endif))


典型的C++项目结构,按照Visual Studio的习惯,可以将代码分为头文件(.h)和源文件(.cpp)。

项目结构建议:

1. SortAlgorithms.h​ (头文件 - 函数声明)

复制代码
#ifndef SORTALGORITHMS_H
#define SORTALGORITHMS_H

#include <iostream>
#include <vector>
using namespace std;

// 函数声明
void insertionSortWithSteps(vector<int>& arr);

#endif // SORTALGORITHMS_H

2. SortAlgorithms.cpp​ (源文件 - 函数定义)

复制代码
#include "SortAlgorithms.h"

// 直接插入排序函数定义(带步骤输出)
void insertionSortWithSteps(vector<int>& arr) {
    int n = arr.size();
    
    for (int i = 1; i < n; i++) {
        int key = arr[i];
        int j = i - 1;
        
        cout << "\n第" << i << "轮: 插入 " << key << endl;
        cout << "  当前状态: ";
        for (int k = 0; k < n; k++) {
            if (k == i) cout << "| ";
            cout << arr[k] << " ";
        }
        cout << endl;
        
        // 移动元素
        while (j >= 0 && arr[j] > key) {
            arr[j + 1] = arr[j];
            j--;
        }
        
        // 插入元素
        arr[j + 1] = key;
        
        cout << "  插入后: ";
        for (int k = 0; k < n; k++) {
            cout << arr[k] << " ";
        }
        cout << endl;
    }
}

3. main.cpp​ (主程序文件)

复制代码
#include "SortAlgorithms.h"

int main() {
    vector<int> arr = {5, 2, 4, 6, 1, 3};
    
    cout << "直接插入排序过程:" << endl;
    cout << "初始数组: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;
    
    insertionSortWithSteps(arr);
    
    cout << "\n最终排序结果: ";
    for (int num : arr) {
        cout << num << " ";
    }
    cout << endl;
    
    return 0;
}

Visual Studio中的文件组织:

文件结构:

复制代码
你的项目文件夹/
│
├── SortAlgorithms.h      (头文件 - 包含函数声明)
├── SortAlgorithms.cpp    (源文件 - 包含函数定义)
└── main.cpp              (主文件 - 包含main函数)

在Visual Studio中创建步骤:

  1. 创建新项目:选择"控制台应用"

  2. 添加文件

    • 在"解决方案资源管理器"中右键"头文件" → 添加 → 新建项 → 选择"头文件(.h)" → 命名为SortAlgorithms.h

    • 在"源文件"上右键 → 添加 → 新建项 → 选择"C++文件(.cpp)" → 命名为SortAlgorithms.cpp

    • 修改现有的main.cpp(或添加一个新的)

  3. 编译运行:按F5或Ctrl+F5编译运行

文件类型的说明:

  • .h 文件​ (头文件):包含函数声明、类声明、宏定义、类型定义等

  • .cpp 文件​ (源文件):包含函数定义、类方法的实现

  • main.cpp​ (主源文件):包含main()函数,程序的入口点

头文件保护(#ifndef/#define/#endif)

没有头文件保护

复制代码
// 假设在main.cpp中:
#include "myheader.h"
#include "myheader.h"  // 重复包含,会导致编译错误!

有头文件保护

复制代码
// myheader.h
#ifndef MYHEADER_H      // 如果MYHEADER_H没有被定义
#define MYHEADER_H      // 定义MYHEADER_H

// 头文件的实际内容
void myFunction();
int myVariable = 10;

#endif                 // 结束
相关推荐
邪修king26 分钟前
UE5 进阶篇第一弹:中期架构升级 —— 组件化开发与 Gameplay 框架实战
c++·游戏·架构·ue5
小O的算法实验室1 小时前
2025年IEEE TETCI,异构无人机取送货问题中的转运优化,深度解析+性能实测
算法·论文复现·智能算法·智能算法改进
chao1898448 小时前
基于 SPEA2 的多目标优化算法 MATLAB 实现
开发语言·算法·matlab
沪漂阿龙8 小时前
AI大模型面试题:支持向量机是什么?间隔最大化、软间隔、核函数、LinearSVC 全面拆解
人工智能·算法·支持向量机
難釋懷8 小时前
Redis数据结构-Set结构
数据结构·redis·bootstrap
little~钰9 小时前
倍增算法和ST表
算法
知识领航员10 小时前
蘑兔AI音乐深度实测:功能拆解、实测表现与适用场景
java·c语言·c++·人工智能·python·算法·github
薛定e的猫咪10 小时前
因果推理研究方向综述笔记
人工智能·笔记·深度学习·算法
如何原谅奋力过但无声11 小时前
【灵神高频面试题合集06-08】反转链表、快慢指针(环形链表/重排链表)、前后指针(删除链表/链表去重)
数据结构·python·算法·leetcode·链表