C++ 在C+中声明、更改和添加到结构列表的数组中+;

C++ 在C+中声明、更改和添加到结构列表的数组中+;,c++,list,struct,linked-list,malloc,C++,List,Struct,Linked List,Malloc,我创建了一个结构,该结构上有一个度量。我正在生成一系列这些结构,我想根据这个度量将它们排序到一个数组中。基本上,如果度量为0,我希望它出现在数组[0]槽的列表中,如果度量为14,我希望它出现在数组[14]槽的列表中。度量(数组大小)的边界是可变的,基于生成结构的同一个变量,因此我需要使用malloc动态声明数组。我一直在试验如何获得我的结构的这个列表数组。我想不出来。我在谷歌上搜索了这个问题,还没有找到解决办法 还有,一旦我有了数组,我如何向特定数组单元格的列表中添加另一个元素?然后返回并比较第

我创建了一个结构,该结构上有一个度量。我正在生成一系列这些结构,我想根据这个度量将它们排序到一个数组中。基本上,如果度量为0,我希望它出现在数组[0]槽的列表中,如果度量为14,我希望它出现在数组[14]槽的列表中。度量(数组大小)的边界是可变的,基于生成结构的同一个变量,因此我需要使用malloc动态声明数组。我一直在试验如何获得我的结构的这个列表数组。我想不出来。我在谷歌上搜索了这个问题,还没有找到解决办法

还有,一旦我有了数组,我如何向特定数组单元格的列表中添加另一个元素?然后返回并比较第i个单元格中列表的所有元素与第(n-i)个单元格中的元素

编辑:并非所有指标都包含元素,这也可能会有所帮助

编辑2:我试过这个,它似乎有一些问题

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/ > <代码>列表< /> >,因为它保留空间但不构造任何对象。我建议选择一种语言,因为答案在每一个方面都是完全不同的。如果你以前没有使用过C++,你必须确保<>代码> sxOb/<代码>具有适当的值语义(如果复制或移动,它将保持为有效的对象)。做到这一点最简单的方法是使它只包含本身具有适当值语义的成员变量。
int main()
{
    MyTable items; 
    items.insert( whatever );
}