小编Tho*_*ard的帖子

std :: string使用的空闲内存

我有一个struct看起来像这样:

struct queue_item_t {
    int id;
    int size;
    std::string content;
};
Run Code Online (Sandbox Code Playgroud)

我有一个std::vector< queue_item_t >从数据库查询中填充了许多这些.

处理每个项目时,将从磁盘读取文件,并将其内容放入content字符串成员中.该项目被处理(content被解析),我.clear()在字符串上执行,以免占用我的所有记忆.

但是,这似乎并没有释放内存.我有数十万个项目正在处理中,最终,内存使用量将超出可用范围,并且应用程序被Linux以"内存不足"为原因杀死.

如何释放这些字符串使用的内存?

c++ linux stdstring

8
推荐指数
1
解决办法
6723
查看次数

字符串数组的排列

我根本无法解决如何解决这个问题,经过彻底搜索谷歌没有任何结果,我转向你希望有一个解决方案.

鉴于下面的示例数组:

array(
    'Type' => array(
        'Toppe',
        'Bukser_og_Jeans'
    ),
    'Size' => array(
        'Extra_small',
        'Small'
    ),
    'Colour' => array(
        'Rod'
    )
)
Run Code Online (Sandbox Code Playgroud)

(注意:这仅仅是一个示例;实际的现实生活情况可能每组的组/和/或元素更少/更多)

我将如何得出以下结果?

Toppe,Extra_small,Rod
Toppe,Small,Rod
Bukser_og_Jeans,Extra_small,Rod
Bukser_og_Jeans,Small,Rod
Run Code Online (Sandbox Code Playgroud)

这是一个产品搜索,API只允许每个查询的每个类型,大小和颜色组的'细化'值,但我的分配需要查询和聚合多个API查询的结果.

,我需要某种形式的递归函数来做到这一点,但我一直无法甚至产生接近我的预期结果的任何代码.

我在谷歌上找到的只是关于字母甚至字符串的翻译,但人们需要的地方有"红色,蓝色,绿色","蓝色,红色,绿色","绿色,红色,蓝色"等. ,显然,不是我想要的.

我希望这里的某个人能够理解我想做的事情,并且知道如何去做.

编辑:由@ikegami发布的解决方案,转换为PHP:

$iter = 0;
while (1) {
    $num = $iter++;
    $pick = array();

    foreach ($refinements as $refineGroup => $groupValues) {
        $r = $num % count($groupValues);
        $num = ($num - $r) / count($groupValues);
        $pick[] = $groupValues[$r];
    }

    if ($num > 0) {
        break;
    }

    print join(', ', …
Run Code Online (Sandbox Code Playgroud)

php arrays permutation

5
推荐指数
2
解决办法
2492
查看次数

std :: map insert/erase的并发问题

我正在编写一个线程应用程序,它将处理一个资源列表,可能会也可能不会将结果项放在每个资源的容器(std :: map)中.资源处理在多个线程中进行.

结果容器将被遍历并且每个项目由一个单独的线程操作,该线程接受一个项目并更新MySQL数据库(使用mysqlcppconn API),然后从容器中移除该项目并继续.

为了简单起见,这里是逻辑的概述:

queueWorker() - thread
    getResourcesList() - seeds the global queue

databaseWorker() - thread
    commitProcessedResources() - commits results to a database every n seconds

processResources() - thread x <# of processor cores>
    processResource()
    queueResultItem()
Run Code Online (Sandbox Code Playgroud)

和伪实现来展示我正在做的事情.

/* not the actual stucts, but just for simplicities sake */
struct queue_item_t {
    int id;
    string hash;
    string text;
};

struct result_item_t {
    string hash; // hexadecimal sha1 digest
    int state;
}

std::map< string, queue_item_t > queue;
std::map< string, result_item_t …
Run Code Online (Sandbox Code Playgroud)

c++ concurrency pthreads

2
推荐指数
1
解决办法
2209
查看次数

标签 统计

c++ ×2

arrays ×1

concurrency ×1

linux ×1

permutation ×1

php ×1

pthreads ×1

stdstring ×1