gpt4 book ai didi

C++对许多项目使用数组或 vector

转载 作者:太空狗 更新时间:2023-10-29 20:26:10 24 4
gpt4 key购买 nike

以下代码摘自大学图论项目的源代码(有向加权图的表示):

struct Edge
{
int neighboor : 20;
int weight : 12;
} e;

struct Node
{
double x;
double y;

vector<Edge> neighboors;
};

...

vector<Node> list;
list.resize(countNode);

有没有办法通过用例如数组替换 vector< Edge > 来节省更多内存?我在想,有成千上万的 vector< Edge > 被创建,这会占用大量内存,不是吗?

对不起我的英语。提前致谢。

最佳答案

您可以为所有节点共享边 vector :

类似于:

struct Edge
{
int32_t neighboor : 20;
int32_t weight : 12;
} e;

struct Node
{
double x;
double y;
int32_t indexInEdges : 28;
int32_t neighboorCount : 4; // You may adjust these numbers
};

std::vector<Node> nodes;
std::vector<Edge> edges; // So edges contains the edges of nodes[0]
// then those of nodes[1] and so on.

您还可以使用 float 而不是 double 来减小 Node 的大小

关于C++对许多项目使用数组或 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20960790/

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