gpt4 book ai didi

sorting - 对 SystemVerilog 关联数组进行排序的最佳方法?

转载 作者:行者123 更新时间:2023-12-02 01:49:27 28 4
gpt4 key购买 nike

我有一个关联数组,我需要按特定顺序处理该数组中的项目。最好的方法是什么?

这是一个例子。假设我有一个人名和年龄的关联数组:

int age[string];
age["bob"] = 32;
age["timmy"] = 4;
age["tyrian"] = 31;

我需要从最年轻的人到最年长的人处理这个数组。目前,我正在创建另一个数组来对其进行索引和排序。

  string sorted_age[$];

// Is there a more efficient way to do this sort?
foreach (age[i]) begin
bit inserted = 0;
foreach (sorted_age[j]) begin
if (age[i] < age[sorted_age[j]]) begin
sorted_age.insert(j, i);
inserted = 1;
break;
end
end
if (!inserted) begin
sorted_age.push_back(i);
end
end

EDA Playground 上的完整示例:http://www.edaplayground.com/x/2_8

最佳答案

您可以再添加一个队列,然后使用内置的数组方法。我没有做过性能测试(这可能取决于模拟器),但它的代码行数更少且易于阅读。

  string sorted_age[$];
int store_age [$];

store_age = age.unique(); // find all unique ages (no duplicates)
store_age.sort(); // sort by age
foreach(store_age[i]) begin
// multi entry puch_back
sorted_age = {sorted_age, age.find_index with (item==store_age[i])};
end

EDA Playground 上的完整示例

关于sorting - 对 SystemVerilog 关联数组进行排序的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23789699/

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