我正在尝试实现一个指向其他向量的向量,然后使用索引提取第二个向量的值。例如,我希望通过对第一个向量进行索引来索引向量的3值;
我得到了一些向量索引超出范围,我不明白为什么。下面是代码。
#include<iostream>
#include<map>
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n = 2;
vector <vector<int>*> vec1;
for (int i = 0; i < n; i++)
{
vector<int> vec;
vec.clear();
cout << "Enter number of var : ";
int var;
cin >> var;
for (int i = 0; i < var; i++)
{
cout << "Enter number : ";
int num ;
cin >> num;
vec.push_back(num);
}
vec1.push_back(&vec);
cout << "Container ends \n";
}
cout << "Enter i : ";
int i;
cin >> i;
cout << "Enter j : ";
int j;
cin >> j;
auto newvec = vec1[i];
cout << newvec->at(j);
system("pause");
return 0;
}
我实际做的是这样的。但我不知道这是不是一个好方法。我在堆中分配向量。
#include<iostream>
#include<map>
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int n = 2;
vector <vector<int>*> vec1;
for (int i = 0; i < n; i++)
{
vector<int> *vec = new vector<int>;
vec->clear();
cout << "Enter number of var : ";
int var;
cin >> var;
for (int i = 0; i < var; i++)
{
cout << "Enter number : ";
int num ;
cin >> num;
vec->push_back(num);
}
vec1.push_back(vec);
cout << "Container ends \n";
}
cout << "Enter i : ";
int i;
cin >> i;
cout << "Enter j : ";
int j;
cin >> j;
auto newvec = vec1[i];
cout << newvec->at(j) << endl;;
system("pause");
return 0;
}
https://stackoverflow.com/questions/56416678
复制相似问题