gpt4 book ai didi

c++ - 组织 C++ 代码

转载 作者:行者123 更新时间:2023-11-28 05:32:53 25 4
gpt4 key购买 nike

我正在寻找有关如何组织我的 C++ 代码的建议。

我有一个 int 数组,side,我希望它是静态的,因为它的值在调用之间保持不变。这是因为我的函数 foo() 将递归地修改数组边,所以我不希望对边进行复制。此外,side 的大小只能在编译时根据传递给函数 bar() 的 vector 的大小来确定。

我想到了下面的结构来布置这样的问题。

我保留了一个全局 int 指针 side,然后我可以使用它指向我的 int 数组的地址,然后使用 foo 中的指针 *side 进行修改。

能否就此代码的布局和组织给我建议?我是 C++ 的新手,所以非常感谢对以下结构的任何建议。

#include <iostream>
#include <vector>

using namespace std;

int *side;

class A {
public:
int foo(bool);
int bar(vector<int>);
void set_n(int n){ class_n = n;};
private:
int class_n;
};

int A::foo(bool fl)
{
int n = class_n;
for(int i = 0; i < n; i++) {
// modify side[] and then recursively call foo
}

return 0;
}

int A::bar(vector<int> t)
{
int size = t.size();
set_n(size);
int a = foo(true);

int *side_local = new int[size];
for(int i = 0; i < size; i++) {
side_local[i] = 0;
}
side = side_local;
return 0;
}

int main()
{
A a;
vector<int> t = {1, 2, 3};
a.bar(t);
return 0;
}

最佳答案

递归调用可以传递指向自身的指针:

void foo(int *pList)
{
foo(pList); // recursive
}

然后正在处理相同的列表。

也就是说,由于 foo 在一个类中,所以您也不需要全局变量,而是一个成员变量。

class A
{
int *pMemberList;
...
void foo();
}

现在 foo 可以一直看到 pMemberList。

但是...传递它可能是一个更好的选择,因为将来您的类(class)可能包含 2 个您想要在其上执行 foo 的列表。

关于c++ - 组织 C++ 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39021904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com