std::构造函数中的向量和对似乎为"空"

std::vector and pair in constructor appear to be 'empty'

本文关键字:构造函数 向量 std      更新时间:2023-10-16

出于某种原因,我的向量和对容器在运行时输出"0",而不是"input"的值。这与我声明容器大小的方式有关吗?我也不确定我是否正确使用了emplace_back功能。

#include <iostream>
#include <utility>
#include <vector> 
using namespace std;
class Graph {
    private:
    int n, h, input;
    vector< pair <int,bool> > couple;
    vector <int> vec; 
    public: 
    Graph(vector<int> getVec, int getN, int getH) : vec{move(getVec)}, n(getN), h(getH){  
    vec.resize(n*n);
    couple.resize(n*n);
    for (int i = 0; i < vec.size(); ++i){
        cin >> input;
        vec.push_back(input);
        couple.emplace_back(make_pair(vec[i], false));
        //  cout << vec[i];
        cout << couple[i].first;
    }
};
};
int main() 
{
    int N, H, input;
    cin >> N >> H;
    vector <int> vector;
    Graph g (vector, N, H);
}

在构造函数中尝试一下。调整大小后,您不应该使用 push_back,因为向量已经被 vector.resize(( 膨胀了。

Graph(vector<int> getVec, int getN, int getH) : vec{ move(getVec) }, n(getN), h(getH){
        vec.resize(n*n);
        couple.resize(n*n);
        for (int i = 0; i < vec.size(); ++i) {
            cin >> input;
            vec.at(i) = input;
            couple.at(i) = make_pair(vec[i], false);
            cout << couple[i].first;
        }
    };