在for循环c ++中将一个向量复制到另一个向量

Copy one vector to another in for loop c++

我需要为月度任务实施一个简单版本的时间表。比如支付电费,通讯订阅费等。我想实现如下一组操作:

如果下个月的天数多于当前的天数,则“额外”天数必须留空(不包含个案);

如果下个月的天数少于当前月份,则所有“额外”天数的个案必须移至下个月的最后一天。

基本上我对“下一步”有疑问。即从旧矢量月份复制到新矢量月份。这是我的代码:

#include <iostream>
#include <string>
#include <algorithm>
#include <vector>

using namespace std;



int main(){
    //q - number of operations to perform.
    //day - on which day to plan operation.
    //to_do - what exactly to do on some day.
    //operation - which kind of operation to perform.

    vector<int>day_mon = {31,28,31,30,31,30,31,31,30,31,30,31};
    //m_ind - month index 
    int m_ind = 0;
    int q,day;
    string operation;
    string to_do; 
    
  


    //vector of the current month
    vector<vector<string>> current_month(31);
    
    

    cin >> q;
    
    //for q operations:
    for(int i = 0;i< q;i++){
        cin >> operation;
        if(operation == "NEXT"){
            //insert days in the next months
            vector<vector<string>> next_month = current_month;

            int days_diff = day_mon[m_ind] - day_mon[m_ind+1];
            //if next month has less days as current month, write days into the last day 
            //of the next months
            if(days_diff > 0){
                for(int i = 0; i < days_diff;i++){
                    next_month[day_mon[m_ind]-1].insert(end(next_month[day_mon[m_ind]-1]), begin(next_month[day_mon[m_ind]+i]), end(next_month[day_mon[m_ind]+i]));
                }
            }               
          
        } else if(operation == "ADD"){
            cin >> day >> to_do;
            current_month[day].push_back(to_do);
        } else if(operation == "DUMP"){
            cin >> day;
            for(int i = 0; i < current_month[day].size(); i++){
                cout << current_month[day][i] << ' ';
            }
            cout << endl;
            current_month[day].clear();
        }

    }

    return 0;
    
    
}

我的问题是,我不知道如何将 next_month 有效地转换为 current_month。如何在 C++ 中完成?

这个问题我不是很懂。 如果您正在尝试克隆载体,请尝试以下操作:

#include <iostream>
#include <vector>

using namespace std;

int main () {
    vector<int> list1 = {1, 2};
    vector<int> newList;

    for (int i = 0; i < list1.size(); i++) {
        newList.push_back(list1[i]);
    }    

    for (int i = 0; i < newList.size(); i++) {
      cout << newList[i] << ", ";
    }
    
    return 0;
}

预期的输出是: 1, 2,

抱歉没有完全理解这个问题。反正可能是错的。

您需要的是每个月的一组向量。如果您想将月份编号为 0 - 11,则可以是另一个向量,也可以是月份名称到向量的映射。让我们去前者

嵌套向量太多也难以阅读。让我们定义一些类型。

typedef vector<string> day; // the tasks for a day 
typedef vector<day> month;  // a month

好的,现在让我们创建一个年份

vector<month> year(12);
for (int days : day_mon) {
    year.emplace_back(month(days));
}

现在让我们选择一月作为我们当前的月份

month& current_month = year[0];

并在 1 月 4 日添加任务

current_month[4].push_back("do dishes");

现在让我们切换月份

current_month = year[5];

.....