用迭代器求vector<double>中元素的和,for语句写循环

本文介绍了一个使用C++实现的简单程序,该程序通过标准输入接收一系列浮点数并将其存储在一个std::vector容器中。接着,程序计算这些数值的总和,并将结果输出到屏幕上。此示例展示了如何利用STL容器与迭代器来简化常见的数值计算任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
#include<vector>
using namespace std;

double sum(vector<double> ivec )

{       vector<double>::iterator iter;
double result=0;
    for(vector<double>::iterator iter=ivec.begin();iter!=ivec.end();++iter)
        result+=*iter;
    return result;
}

int main()
{
    vector<double>ivec1;
    cout<<"please input double type for vector(ctrl+z to end):"<<endl;
    double val;
    while(cin>>val){
        ivec1.push_back(val);
    }
    cout<<sum(ivec1)<<endl;
    return 0;
}
``` #include <iostream> #include <vector> #include <algorithm> #include <iomanip> using namespace std; int main() { int n; double w, u, v, t1, t2; cin >> n >> w >> u >> v >> t1 >> t2; vector<pair<double, double>> forbidden; for (int k = 1; k <= n; ++k) { char dir; int m; cin >> dir >> m; double T_start = (k - 1) * w / v; double T_end = k * w / v; for (int i = 0; i < m; ++i) { double l, p; cin >> l >> p; if (dir == 'E') { p = -p; // 转换为西向 } // 计算时间窗口 double a = (p - l) / u; double b = p / u; // 计算禁止区间 double forbid_start = a - T_end; double forbid_end = b - T_start; forbidden.emplace_back(forbid_start, forbid_end); } } // 合并重叠的禁止区间 sort(forbidden.begin(), forbidden.end()); vector<pair<double, double>> merged; for (auto &interval : forbidden) { if (merged.empty()) { merged.push_back(interval); } else { auto &last = merged.back(); if (interval.first <= last.second) { last.second = max(last.second, interval.second); } else { merged.push_back(interval); } } } // 提取在[t1, t2]范围内的有效禁止区间 vector<pair<double, double>> valid_forbidden; for (auto &interval : merged) { double s = max(interval.first, t1); double e = min(interval.second, t2); if (s < e) { valid_forbidden.emplace_back(s, e); } } // 计算最大允许时间段 double max_len = 0.0; double current_start = t1; for (auto &interval : valid_forbidden) { double s = interval.first; double e = interval.second; if (current_start < s) { max_len = max(max_len, s - current_start); current_start = e; } else { current_start = max(current_start, e); } } if (current_start < t2) { max_len = max(max_len, t2 - current_start); } cout << fixed << setprecision(3) << max_len << endl; return 0; }```以c++98标准重构代码
03-29
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值