簡體   English   中英

C ++向量:調用push_back時出錯

[英]C++ Vectors: Error in calling push_back

我正在執行以下代碼,但收到以下錯誤消息:

錯誤:請求'vec1'中的成員'push_back',該成員屬於非類類型'std :: vector [5]'

錯誤:請求“ vec2”中的成員“ push_back”,該成員屬於非類類型“ std :: vector [5]”

錯誤:“ vec1 [i] * vec2 [i]”中的“ operator *”不匹配

我試圖乘以兩個向量(通過動態獲取輸入)並將結果存儲在使用指針表示法的數組中。 請幫幫我嗎? 謝謝!

#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) << " ";
    }
}

為了您的目的,您應該使用:-

vector<int> vec1; 
vector<int> vec2;

然后保留您想要的任何數量

vec1.reserve(5);
vec2.reserve(5);

向量必須像

vector<int> vec1;
vector<int> vec2;

代替

vector<int> vec1[5];
vector<int> vec2[5];

同樣,在向量定義之后,您可以為它們的潛在元素保留內存:

vec1.reserve( length );
vec2.reserve( length );

並且不要忘記刪除分配的動態數組

delete [] ptr;

同樣,如果將length聲明為具有size_t類型而不是int類型,則更好。 在這種情況下,您無需檢查它是否具有負值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM