将变量存储在将被多次使用的函数中的最佳方式(c++)

Best way to store variables in a function that will be used multiple times (c++)

本文关键字:函数 最佳 方式 c++ 存储 变量      更新时间:2023-10-16

主要思想:

我为dijkstra的算法写了一段代码,我很出色。然而,我需要在其他代码和东西中调用函数(从头文件)。但我只需要在调用函数时存储变量(所以一旦调用函数,它将返回变量,但不会返回以前调用的变量)。我需要将这些变量引用到其他代码/文件中。

我如何存储变量:

包含两个向量的结构。

我的问题:

最好创建一个.h文件来存储一个结构并更改其中的变量,还是有一种方法可以从另一个文件中的另一个函数调用变量并使用它,而不必担心内存问题等等?

此外。。。如果我的int main不带参数,我该如何为这个dijkstra算法设置.h文件?。。。。。。

-编辑-

typedef struct
{
 int a;
 int b;
} STR;
STR Func()
{
 STR str;
str.a = 5;
str.b = 6;
return str;
}

我的代码的基本模型。但我需要引用这个结构,它是另一个文件中的变量,带有另一个函数。然而,我在编译时得到了对"main"错误的未定义引用,所以我添加了一个调用Func()的int main()。建议?

-编辑dos-

建议的修复

.h应包括:

struct_name dijkstra(input variables)

.cpp应包括:

#include "dijkstra.h"
typedef struct{
blah...
}struct_name;
struct_name dijkstra{
struct_name retval;
function def...
return retval;
}

main.cpp应包括:

#include "dijkstra.h"
#include "dijkstra.cpp"
int main(){
initialize variables... blah
struct_name return_struct = dijkstra(input variables);
return 0;
}

通常,您会将算法需要的所有输入数据作为输入参数传入,并将算法创建的所有有用的输出数据作为返回类型返回。如果需要将一些信息捆绑在一起,可以创建一个单独的C++结构或类。

对于算法内部使用的数据结构,通常只在.cpp文件中声明它们,而不是在.h文件中声明。因此,用户将无法访问/查看内部结构(如果您想稍后更改其工作方式,这很有用)。

因此,头文件应该只有函数声明——带有输入参数和输出返回类型。所有算法代码都进入.cpp文件,其中包括.h文件。头文件是"接口",cpp文件是"实现",我们试图将它们分开。

编辑:(总结后续讨论中的有用要点)

本教程展示了两个.cpp文件和一个.h文件是如何组合在一起的。基本上,两个.cpp文件都包含.h文件。.h文件包括声明(对于函数类型和结构类型),但不包括函数定义:

www.learncpp/cpp-tutorial/19-header-files/

由于您使用g++,您可以使用将它们编译为单个可执行文件

g++-o可执行文件名main.cpp dijkstra.cpp

相关文章: