首页 > 解决方案 > 使用提供的偏移量和限制对两个循环结果进行排序

问题描述

我目前正在尝试返回在两个 for 循环中获得的结果,其中包含两个可选参数limit和一个offset. 结果还将返回more带有剩余条目的无符号整数。

循环前的初始化数据:

uint32_t search_results = 0;
uint32_t search_limit = p.limit;
bool contSearch = false;
uint32_t search_offset = p.offset;
uint32_t returnCount = 0; //more

第一个循环:

for (size_t knpos = 0; knpos < names_rows_result.rows.size(); knpos++)

这是允许偏移和限制在第一个循环之后和第二个循环之前工作的第一组逻辑:

            if (!contSearch) {
                if (search_limit >= requests_rows_result.rows.size() || (p.limit - p.offset) == 0 || p.limit == 0) {
                    search_limit = requests_rows_result.rows.size();
                    contSearch = true;
                } else {
                    search_limit = (p.limit - p.offset);
                }
                search_results = (requests_rows_result.rows.size() - search_limit);
            } else {
                search_limit = requests_rows_result.rows.size();
                search_results += (requests_rows_result.rows.size() - search_limit);
            }

在第二个循环内:

if( search_offset < requests_rows_result.rows.size() ){
   for (size_t pos = 0 + search_offset; pos < search_limit; pos++) {
        //GATHERS DATA
        result.requests.push_back(DATA);
        returnCount++;
   }
}

这似乎适用于第一个循环,但是当它进入下一个条目时knpos,我在只返回请求的数据时遇到了一些麻烦。

标签: c++

解决方案


推荐阅读