将变量存储在将被多次使用的函数中的最佳方式(c++)
Best way to store variables in a function that will be used multiple times (c++)
主要思想:
我为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
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 复制包含C++所有元素的对象!(构造函数和赋值,最佳实践?
- C++:将向量传递到构造函数以创建成员变量的最佳方法?
- C++ 将函数指针与最佳性能相结合
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- std::使用类成员函数创建线程 - 最佳实践
- 将(临时的?)std::string传递给使用它来构造一个接受副本的对象的函数的最佳方法是什么?
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 将uint8_t*buffer和size_tbufferlen从C++传递到C中的API函数的最佳方式是什么
- 从类中的对象调用类中的函数的最佳方法
- 这是使用构造函数初始化数组对象的最佳方法吗?
- 最佳做法:在函数中频繁使用大时态缓冲区 (C++)
- 在 c++ 中抽象两个略有不同的函数的最佳方法是什么?
- C++最佳实践:接受uint8_t、uint16_t、uint32_t、浮点数的函数
- 使用 emplace_back 避免移动构造函数调用的最佳方法?
- 调用不属于基类的派生类函数的最佳方法是什么?
- C++最佳实践 - 函数类型别名 std::function<T> 或 T
- C++ std::string 中是否有任何函数可以计算两个字符串的相同起始字符的总数或任何最佳方法
- 从C 中的函数中动态分配的缓冲区返回的最佳模式是什么?
- 字符传递给其他函数最佳实践