簡體   English   中英

搜索地圖並打印矢量

[英]Search Map & Print Vector

我有一個STL映射,該映射將密鑰映射到可交付成果的向量。 我想在地圖上搜索某個鍵並打印出所有可交付成果。 我正在嘗試遍歷矢量並在每個項目上調用print。

typedef std::vector<Deliverables>      MyDeliverables;
typedef std::map<int, MyDeliverables> MyMap;

MyMap map1;

template < class T >

void printVector( const vector <T> &v)
{
    for (auto p = v.begin(); p != v.end(); ++p)
        *p->print();
}


int main()
{   
Deliverables del("Name", 12, 12, 2018);

map1.insert(MyMap::value_type(1, MyDeliverables()));

auto search = map1.find(1);
if (search != map1.end()) {
    std::cout << "Found Student ID: " << search->first << '\n';
    printVector(search->second);
}
else {
    std::cout << "Not found\n";
}
}

錯誤C2662'無效的可交付成果:: print(無效)':無法將'this'指針從'const可交付成果'轉換為'可交付成果&'
行:* p-> print();

如何正確打印可交付成果?

問題出在您未顯示的代碼上:

Deliverables::print()

它不是const ,所以您不能使用它。 將打印功能聲明為const,然后可以使用const Deliverables&

Deliverables::print() const

然后更改您的循環以避免對要取消引用的內容和次數進行混淆:

for(const auto& p: v)
    p.print();

暫無
暫無

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

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