标题:关于vector使用时输入的一个问题
只看楼主
EMMMM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-9-16
结帖率:75%
已结贴  问题点数:20 回复次数:3 
关于vector使用时输入的一个问题
我定义了一个结构体
struct task
{
    int inumber;
    int deadline;
    int weight;
    task(int i = 0, int d = 0, int w = 0) :inumber(i), deadline(d), weight(w) {}
};
然后在主函数实例化他
正常时输入d和w的时候只要一个
        while (i <= n)
        {
            cin >> d >> w;
            t.push_back(task(i, d,w));
            ++i;
        }
就可以了,但是现在假如我想先输入一行d,下一行输入w,该怎么写呢?
搜索更多相关主题的帖子: vector 输入 task int 一行 
2018-04-24 16:08
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:20 
听不懂,你d和w分两行输入难道这代码不行吗
2018-04-24 18:22
EMMMM
Rank: 1
等 级:新手上路
帖 子:32
专家分:0
注 册:2017-9-16
得分:0 
回复 2楼 rjsp
这个代码不能d和w分两行输入,只能输入一个d 一个w,然后继续这样一组一组输入,我的意思是能不能改成,假设输入七组数,我先输入7个d,在输入7个w这样
2018-04-24 20:48
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:507
帖 子:8890
专家分:53117
注 册:2011-1-18
得分:0 
我来帮你说清楚吧,对于如下代码
        while (i <= n)
        {
            cin >> d >> w;
            t.push_back(task(i, d,w));
            ++i;
        }
需要这样输入
d0 w0
d1 w1
d2 w2
……
dn wn

现在我想改为这么输入
d0 d1 d2 …… dn
w0 w1 w2 …… nw
怎么办?

----------------------------------------------------------------

一种办法是先将输入的数据保存起来
程序代码:
struct task
{
    int inumber;
    int deadline;
    int weight;

    task( int inumber=0, int deadline=0, int weight=0 )
        : inumber(inumber), deadline(deadline), weight(weight)
    {
    }
};

#include <vector>
#include <iostream>

int main( void )
{
    const size_t n = 10;

    std::vector<std::pair<int,int>> buf;
    buf.resize( n );
    for( size_t i=0; i!=n; ++i )
        std::cin >> buf[i].first >> buf[i].second;

    std::vector<task> tasks;
    tasks.reserve( n );
    for( size_t i=0; i!=buf.size(); ++i )
        tasks.push_back( task(static_cast<int>(i+1),buf[i].first,buf[i].second) );
}

或者是只初始化一半
程序代码:
int main( void )
{
    const size_t n = 10;

    std::vector<task> tasks;
    tasks.reserve( n );
    for( size_t i=0; i!=n; ++i )
    {
        int deadline;
        std::cin >> deadline;
        tasks.push_back( task(static_cast<int>(i+1),deadline) );
    }
    for( size_t i=0; i!=tasks.size(); ++i )
        std::cin >> tasks[i].weight;
}
2018-04-25 08:31



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-486355-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.360189 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved