获取数组中最低的列表计数

use*_*521 2 c++ arrays algorithm stl

我有一个列表数组(array<list<Client*>, 10>),我想看看哪个列表中的项目数最少,所以我可以添加它.我在这里做一个小型平衡系统,当客户进来时,我想将它们添加到1或10个列表中,这些列表具有最低数量的其他客户端以保持列表级别.

我是否必须在这里进行冒泡排序,还是有一些很好的方式来处理这样的事情?

Bar*_*rry 5

这恰恰std::min_element是为了:

std::array<std::list<Client*>, 10> arr;

auto it = std::min_element(arr.begin(), arr.end(), 
          [](const std::list<Client*>& a, const std::list<Client*>& b){
              return a.size() < b.size();
          });
Run Code Online (Sandbox Code Playgroud)

那会给你一个迭代器,其中list元素最少.


Din*_*den 5

如果列表在您开始添加它们时从零元素开始并且您希望保持它们完全平衡,请考虑只添加循环样式列表:

伪代码:

index = 0
list to add to = lists[index % list length]
index++
Run Code Online (Sandbox Code Playgroud)