我正在执行以下代码,但是我收到以下错误消息:
错误:请求会员' push_back' in' vec1',这是非类型' std :: vector [5]'
错误:请求会员' push_back' in' vec2',这是非类型' std :: vector [5]'
错误:不匹配'运营商*' in' vec1 [i] * vec2 [i]'
我试图将两个向量相乘(通过动态获取输入)并使用指针表示法将结果存储在数组中。请帮帮我?谢谢!
#include<iostream>
#include<vector>
using namespace std;
int main()
{
int value1, value2;
int length;
cout << "Please enter the size of the vectors" << endl;
cin >> length;
vector<int> vec1[5];
vector<int> vec2[5];
cout << "Please enter the values for vector 1" << endl;
for(int i = 0; i < length; i++){
cin >> value1;
vec1.push_back(value1);
}
cout << "Please enter the values for vector 2" << endl;
for(int i = 0; i < length; i++){
cin >> value2;
vec2.push_back(value2);
}
int *ptr = new int[length];
for(int i = 0; i < length; i++){
ptr[i] = vec1[i] * vec2[i];
}
for(int i = 0; i < length; i++){
cout << *(ptr + i) << " ";
}
}
答案 0 :(得分:2)
出于您的目的,您应该使用: -
vector<int> vec1;
vector<int> vec2;
然后保留你想要的任何金额
vec1.reserve(5);
vec2.reserve(5);
答案 1 :(得分:1)
矢量必须定义为
vector<int> vec1;
vector<int> vec2;
而不是
vector<int> vec1[5];
vector<int> vec2[5];
在矢量定义之后,您可以为其潜在元素保留记忆:
vec1.reserve( length );
vec2.reserve( length );
不要忘记删除分配的动态数组
delete [] ptr;
如果将长度声明为类型size_t
而不是int
,那也会更好。在这种情况下,您无需检查它是否具有负值。