ACM/ICPC竞赛之STL--pair (转)

本文详细介绍了STL中的pair模板类及其使用方法,包括如何利用pair表示二元组,定义比较运算符以及通过make_pair即时创建pair对象。同时,通过一个具体的编程示例展示了pair在实际问题中的应用。

      STL的<utility>头文件中描述了一个看上去非常简单的模板类pair,用来表示一个二元组或元素对,并提供了按照字典序对元素对进行大小比较的比较运算符模板函数

例如,想要定义一个对象表示一个平面坐标点,则可以:

pair<double, double> p1;
cin >> p1.first >> p1.second; 


      pair模板类需要两个参数:首元素的数据类型和尾元素的数据类型。pair模板类对象有两个成员:first和second,分别表示首元素和尾元素。 

      在<utility>中已经定义了pair上的六个比较运算符:<、>、<=、>=、==、!=,其规则是先比较first,first相等时再比较second,这符合大多数应用的逻辑。 
      当然,也可以通过重载这几个运算符来重新指定自己的比较逻辑。 

      除了直接定义一个pair对象外,如果需要即时生成一个pair对象,也可以调用在<utility>中定义的一个模板函数:make_pair。make_pair需要两个参数,分别为元素对的首元素和尾元素。 

      在题1067--Ugly Numbers中,就可以用pair来表示推演树上的结点,用first表示结点的值,用second表示结点是由父结点乘以哪一个因子得到的。

#include <iostream>
#include <queue>
using namespace std;
typedef pair<unsigned long, int> node_type; 
      main()
{

      unsigned long result[1500];  
      priority_queue< node_type, vector<node_type>, greater<node_type> > Q;  
      Q.push( make_pair(1, 2) );  
      for (int i=0; i<1500; i++)  
      {  
            node_type node = Q.top(); 
            Q.pop();  
            switch(node.second)  
            {

            case 2: Q.push( make_pair(node.first*2, 2) );  
            case 3: Q.push( make_pair(node.first*3, 3) );  
            case 5: Q.push( make_pair(node.first*5, 5) );  
            }  
            result[i] = node.first;  
      }  
      int n; cin >> n;  
      while (n>0)  
      {  
      cout << result[n-1] << endl;  
      cin >> n;  
      }  
      return 1;
}
<utility>看上去是很简单的一个头文件,但是<utility>的设计中却浓缩反映了STL设计的基本思想。有意深入了解和研究STL的同学,仔细阅读和体会这个简单的头文件,
不失为一种入门的途径。  

  


转载于:https://www.cnblogs.com/Xredman/archive/2009/04/21/1440169.html

在车辆工程中,悬架系统的性能评估和优化一直是研究的热点。悬架不仅关乎车辆的乘坐舒适性,还直接影响到车辆的操控性和稳定性。为了深入理解悬架的动态行为,研究人员经常使用“二自由度悬架模型”来简化分析,并运用“传递函数”这一数学工具来描述悬架系统的动态特性。 二自由度悬架模型将复杂的车辆系统简化为两个独立的部分:车轮和车身。这种简化模型能够较准确地模拟出车辆在垂直方向上的运动行为,同时忽略了侧向和纵向的动态影响,这使得工程师能够更加专注于分析与优化与垂直动态相关的性能指标。 传递函数作为控制系统理论中的一种工具,能够描述系统输入和输出之间的关系。在悬架系统中,传递函数特别重要,因为它能够反映出路面不平度如何被悬架系统化为车内乘员感受到的振动。通过传递函数,我们可以得到一个频率域上的表达式,从中分析出悬架系统的关键动态特性,如系统的振幅衰减特性和共振频率等。 在实际应用中,工程师通过使用MATLAB这类数学软件,建立双质量悬架的数学模型。模型中的参数包括车轮质量、车身质量、弹簧刚度以及阻尼系数等。通过编程求解,工程师可以得到悬架系统的传递函数,并据此绘制出传递函数曲线。这为评估悬架性能提供了一个直观的工具,使工程师能够了解悬架在不同频率激励下的响应情况。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值