C ++ std :: <list> SIZE_T类型</list>

时间:2014-12-19 22:57:40

标签: c++ c++11

我通过GetProcessMemoryInfo和PROCESS_MEMORY_COUNTERS获取进程内存使用情况,我想比较哪些用户最多。

我尝试使用std::<list>创建<list>类型的SIZE_T

我添加如下元素:

    list<SIZE_T> sizes;

    PROCESS_MEMORY_COUNTERS info = { 0 };
    info.cb = sizeof(info);
    GetProcessMemoryInfo(process, &info, sizeof(info));

    sizes.push_back(info.WorkingSetSize);

找到最大的:

SIZE_T temp = 0;
for (SIZE_T i = 0; i < sizes.size(); ++i){

    if (sizes[i] > temp){
        temp = sizes[i];
    }
}

或者我使用它错了吗?

泰 *这里不要说我不能做SIZE_T(http://www.cplusplus.com/reference/list/list/

2 个答案:

答案 0 :(得分:5)

您无法在std::list上使用数组样式索引。可以使用std::vector<SIZE_T>标准库算法将容器更改为std::max_element或更改循环。例如:

SIZE_T largest = *std::max_element(sizes.begin(), sizes.end()); // assumes the list isn't empty

请注意,std::max_element会返回迭代器,因此我必须取消引用它才能获取值。

答案 1 :(得分:4)

无法使用std::vector之类的索引访问列表,因为到达第N个元素需要N次操作。

你想要的只是最大值,所以这一行就足够了:

SIZE_T max = *std::max_element(begin(sizes),end(sizes));

您需要包含algorithm标头,并始终尝试对原始循环使用算法函数。

编辑:sizes必须包含某些内容或尊重*是非法的