我是C ++的初学者(使用C:B和eclipse),我正在尝试确定向量的基础知识,但我一直在努力前进,并希望寻求帮助。
基本上,我必须创建2个向量(vet1类型为int和vet2类型为long),并按顺序将它们连接起来以创建第三个向量类型short(vet3)。然后,从vet3元素逐个元素创建一个矩阵4x4(mat1)。
我的问题是创建vet3,程序在那里停止。这可能确实很容易,但我无法弄清楚。
如果我忘记了一些东西或需要更多信息,请告诉我。
PS:对不起,我的英语很抱歉:)
using namespace std;
int main() {
vector<int> vet1; //Cria vector, tipo int, com nome vet1
vector<long> vet2; //Cria vector, tipo long, com nome vet2
vector<short> vet3; //Cria vector, tipo short, com nome vet3
vector<int> mat1[4][4]; //Cria matriz 4x4, tipo int, com nome mat1
int data, i, j, n = 0;
for (i = 0; i < 8; i++) //Laço para preencher o vet1 de dados
{
cout << "\nDigite um numero para a posicao " << vet1.size() << " do vetor 1: " << endl;
cin >> data;
vet1.push_back(data); //função que coloca o valor digitado no final do vetor vet1
}
for (i = 0; i < 8; i++)
{
cout << "\nDigite um numero para a posicao " << vet2.size() << " do vetor 2: " << endl;
cin >> data;
vet2.push_back(data); //função que coloca o valor digitado no final do vetor vet21
}
for (i = 0; i < vet1.size(); i++) //Laço para imprimir vet1
{
cout << "\t[" << vet1[i] << "]";
}
for (i = 0; i < vet2.size(); i++) //Laço para imprimir vet2
{
cout << "\t[" << vet2[i] << "]";
}
for (i = 0; i < 16; i++) //Laço que intercala vet1 e vet2 sequencialmente para criar vet3 com 16 posições
{
vet3[i+n] = vet1[i];
vet3[i+n+1] = vet2[i];
n++;
}
for (i = 0; i < vet3.size(); i++)
{
cout << "\t[" << vet3[i] << "]";
}
n = 0;
for (i = 0; i < 4 ; i++) //Laço para inserir todos os elementos do vet3 numa matriz quadrada 4x4
{
for (j = 0; j < 4; j++)
{
mat1[i][j] = vet3[n];
n++;
}
}
return 0;
}
最佳答案
vet3
为空,因此vet3[i+n]
无效。您需要resize
它或使用push_back
。
关于c++ - 发布 vector 时发生问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43308998/