std::vector 和构造函数中的对似乎是 'empty'
std::vector and pair in constructor appear to be 'empty'
出于某种原因,我的向量和对容器在 运行 时输出“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;
}
};
出于某种原因,我的向量和对容器在 运行 时输出“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;
}
};