常用
queue.push_back(val); queue.push_front(val); val = queue.pop_back(); val = queue.pop_front(); queue.size(); // 获取 queue 的 size queue.delete(idx); // 删除指定 index 的元素 queue.delete(); // 删除 queue 中所有元素 queue.insert(index, val); // 插入元素
不常用
数组支持的用法,也可以用在 queue 上。
queue = queue.shuffle(); // queue 内元素随机乱序 queue = queue.unique(); // 删除 queue 中的重复元素 queue.min(); // 获取最小值 queue.max(); // 获取最大值 queue.reverse(); // 前后逆序 queue.sort(); // 从小大排序 queue.rsort(); // 从大到小排序 queue.sum(); // queue 内元素求和 queue.and(); queue.or(); queue.xor(); queue.product();
queue 内查找
queue = queue.find(x) with (x==val); // 查找值为 val 的元素,x 不用提前声明 queue = queue.find(x) with (x!==val); // 删除 queue 中值为 val 的元素
除了 find,还有 find_index、find_first、find_first_index、find_last、find_last_index 等用法。
在 queue 内外随机选择
std::randomize(val) with {val inside queue}; // 在 queue 中取随机值 std::randomize(val) with {val inside {queue1, queue2};}; // 在两个 queue 中取随机值 std::randomize(val) with {!(val inside queue);}; // 在 queue 之外取随机值
参考
- SystemVerilog IEEE Std 1800-2017