gpt4 book ai didi

c++ - 搜索 map 和打印 vector

转载 作者:行者123 更新时间:2023-11-30 03:19:38 27 4
gpt4 key购买 nike

我有一个 STL 映射,可以将键映射到可交付成果的 vector 。我想在 map 上搜索某个键并打印出所有可交付成果。我正在尝试遍历 vector 并在每个项目上调用打印。

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

Error C2662 'void Deliverables::print(void)': cannot convert 'this' pointer from 'const Deliverables' to 'Deliverables &'
Line: *p->print();

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

最佳答案

问题在于您未显示的代码:

Deliverables::print()

它不是const,所以你不能使用它。将打印函数声明为 const,然后就可以使用 const Deliverables&:

Deliverables::print() const

然后更改您的循环以避免混淆取消引用的内容和次数:

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

关于c++ - 搜索 map 和打印 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53575377/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com