C++ 在C+中声明、更改和添加到结构列表的数组中+;
我创建了一个结构,该结构上有一个度量。我正在生成一系列这些结构,我想根据这个度量将它们排序到一个数组中。基本上,如果度量为0,我希望它出现在数组[0]槽的列表中,如果度量为14,我希望它出现在数组[14]槽的列表中。度量(数组大小)的边界是可变的,基于生成结构的同一个变量,因此我需要使用malloc动态声明数组。我一直在试验如何获得我的结构的这个列表数组。我想不出来。我在谷歌上搜索了这个问题,还没有找到解决办法 还有,一旦我有了数组,我如何向特定数组单元格的列表中添加另一个元素?然后返回并比较第i个单元格中列表的所有元素与第(n-i)个单元格中的元素 编辑:并非所有指标都包含元素,这也可能会有所帮助 编辑2:我试过这个,它似乎有一些问题C++ 在C+中声明、更改和添加到结构列表的数组中+;,c++,list,struct,linked-list,malloc,C++,List,Struct,Linked List,Malloc,我创建了一个结构,该结构上有一个度量。我正在生成一系列这些结构,我想根据这个度量将它们排序到一个数组中。基本上,如果度量为0,我希望它出现在数组[0]槽的列表中,如果度量为14,我希望它出现在数组[14]槽的列表中。度量(数组大小)的边界是可变的,基于生成结构的同一个变量,因此我需要使用malloc动态声明数组。我一直在试验如何获得我的结构的这个列表数组。我想不出来。我在谷歌上搜索了这个问题,还没有找到解决办法 还有,一旦我有了数组,我如何向特定数组单元格的列表中添加另一个元素?然后返回并比较第
list<s_pair> *pairs;
pairs = (list<s_pair>*) malloc(sizeof(list<s_pair>) * (N + 1));
j = { a, b };
pairs[m].push_back(j);
list*对;
pairs=(list*)malloc(sizeof(list)*(N+1));
j={a,b};
对[m]。推回(j);
其中m是s_对类型j的度量。它让我编译,但它会被卡住,试图推回(j)。 C++,你可以做:
#include <vector>
#include <list>
size_t metric(s_pair const &);
class MyTable
{
std::vector< std::list<s_pair> > table;
public:
void insert(s_pair s)
{
size_t index = metric(s);
if ( index + 1 > table.size() )
table.resize(index + 1);
table[index].push_back(s);
}
};
在本例中,没有项目的度量由空列表表示。每个度量是否只有一个结构,并且您的分布是否密集(aka很少或没有漏洞)?请注意,
声明
与您使用的含义不同,您需要定义
或分配
。这对于C和C++来说尤其重要,它们都是不同的和定义良好的概念。(定义
意味着声明
,但不是相反)否。每个度量都可能没有结构或一组结构。我不得不说,四分之一的度量可能没有任何结构,但其余的应该至少有一个。还有,注意到。声明做了什么而定义没有做什么?看起来您正在描述一个具有开放链接的哈希表。(您的度量是散列函数)看看定义这些概念的C标准。有免费的草稿。无论如何,你需要一个来满足你的所有需要。在C++中,几乎可以肯定的是,<代码> MalOC/int main()
{
MyTable items;
items.insert( whatever );
}