簡體   English   中英

錯誤:命名空間'std'中沒有名為'vector'的類型

[英]error: no type named 'vector' in namespace 'std'

為什么會這樣?

錯誤:命名空間'std'中沒有名為'vector'的類型; 你是說'百科'嗎? void askForVector(std :: vector * vector);

#include <iostream>
#include <vector>

void askForVector(std::vector * vector);

int main()
{
    std::vector<int> vector;
    int size;
    askForVector(&vector);
    std::cout << "\nsize: " << vector.size() << std::endl;
    std::cout << vector.at(0);
}


void askForVector(std::vector * vector)
{
    int size;
    std::cout << "please insert the size of vector to order: ";
    std::cin >> size;

    vector->resize(size);

    for(int i = 0; i<size; i++){
        std::cout <<  "please insert a value for the " << i+1 << " position: " ;
        std::cin >> vector[i];
    }

    for(int j: *vector)
        std::cout << ":"<<j;
    std::cout  << ":\n";
}

vector是一個模板,而不是一個類型。 指定特定的專業化:

void askForVector(std::vector<int> * vector);

或使功能通用

template <typename T>
void askForVector(std::vector<T> * vector);

使用引用而不是指針可能會更好:

void askForVector(std::vector<int> & vector);

或按值返回向量:

std::vector<int> askForVector() {
    std::vector<int> vector;
    // your code here
    return vector;
}

避免錯誤之類的

std::cin >> vector[i]; // should be (*vector)[i]

有很多問題:

  1. vector是一個模板,而不是一個類型,你需要模板參數列表,例如函數簽名中的vector<int>

  2. 由於您將指針傳遞給向量,因此使用下標運算符之前需要取消引用它

     std::cin >> vector[i]; // wrong std::cin >> (*vector)[i]; // correct 

以下可能有效:

#include <iostream>
#include <vector>

void askForVector(std::vector<int> * vector);

int main()
{
    std::vector<int> vector;
    int size;
    askForVector(&vector);
    std::cout << "\nsize: " << vector.size() << std::endl;
    std::cout << vector.at(0);

}


void askForVector(std::vector<int> * vector)
{
    int size;
    std::cout << "please insert the size of vector to order: ";
    std::cin >> size;

    vector->resize(size);

    for (int i = 0; i<size; i++){
        std::cout << "please insert a value for the " << i + 1 << " position: ";
        std::cin >> (*vector)[i];
    }

    for (int j : *vector)
        std::cout << ":" << j;
    std::cout << ":\n";
}

暫無
暫無

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

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