从列表中打印元素
print element from list
我有一个列表,它打印出一年的天气数据。数据是按月列出的,我需要在列表排序后找到每年的总数。我使用list.sort()函数按月对列表进行排序。从那里,我需要打印一个特定的数据元素,但我不确定如何这样做。下面是一个未排序列表的示例:
Weather data:
Month temp rainfall
2 60 2.0
4 75 3.4
1 50 1.5
如何打印出特定的温度或降雨量?在本例中,max temp = 75。这就是我如何使用list.sort():
// ListNode class not included
bool shift_Months( ListNode M1, ListNode M2 )
{
if( M1.getMonth() < M2.getMonth() ) return true;
return false;
}
int main ()
{
ListNode M;
list<ListNode> Mlist;
list<ListNode>::iterator p;
int i;
Mlist.sort( shift_Months );
for( i=0,p=Mlist.begin(); i<Mlist.size()-1; i++,p++ )
cout << *p;
return 0;
}
我在考虑根据我需要得到的东西对列表进行排序。例如,按temp排序,并显示最后一个temp.我不知道如何只显示temp而不显示列表的其余部分。
我在考虑根据我需要得到的东西对列表进行排序。例如,按温度排序,并显示最后一个温度。
排序很慢。仅仅为了对数据进行分析而进行排序是糟糕的。
为什么不在列表中添加项目时跟踪最大值和最小值呢?可以使用包装器类。
如果由于任何原因这是不可行的(并且您可以使用O(n)
查找),您可以通过列表搜索您正在寻找的值的记录,但我仍然不会为此修改原始数据。
我不知道如何只显示temp而不显示列表的其余部分。
我们需要知道ListNode
是什么样子才能给出一个确切的答案,但我认为你正在寻找类似cout << p->getTemp();
的东西
首先,您可能不应该为此使用std::list
。您没有显示任何东西来表明它是一个好的选择,并且在其方向上没有特定的指示,std::list
通常是关于要使用的容器的最后选择。就此而言,即使你认为你的确实有一个直接的具体指示,仍然很有可能是一个平庸或糟糕的选择。
其次,要获得最小值或最大值,通常只需要分别使用std::min_element
或std::max_element
:
struct by_month {
bool operator()(ListNode const &a, ListNode const &b) {
return a.GetMonth() < b.GetMonth();
}
};
std::vector<ListNode> data;
std::cout << std::max_element(data.begin(), data.end(), by_month());
相关文章:
- 从控制台中删除最后打印的元素
- 数组元素打印的递归方法
- 打印所有链表的元素 (C++)
- 更新的矢量元素不打印
- 打印矢量数组中的所有元素
- 为什么我在尝试在单向链表中打印元素时会出现这个永无止境的循环
- 如何在c ++中打印给定桶号的所有元素unordered_set?
- 为什么平均打印数组元素比打印单个对象慢C++?
- 为什么这个程序没有打印返回的迭代器的正确第二个元素?
- 使用 <list> (错误 C2760) 打印队列的元素
- 使用哈希图打印第一个重复元素;
- 打印二叉树中的常见元素
- 打印无序映射的第二个元素,即集合
- 打印所有儿童树元素的最佳算法?
- 类中的 C++ 全局映射,不要打印 map 元素
- 为什么数组不打印第一个元素?
- C++ Expat 仅打印元素的第一个字母和标签中的数据
- 打印出对象向量中的每个元素C++
- 有没有办法搜索向量的元素,<String>然后检查它是否包含特定的字符,如果它确实打印了它
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?