简单的更改会导致 make:错误 1

发布于 2024-09-05 22:18:42 字数 324 浏览 4 评论 0原文

有这个:

rtable.insert ( pair<string,string>(destination,nhop) ); // route insertion
return 0;

将其更改为:

if (rtable.insert ( pair<string,string>(destination,nhop)) == 0){
    return 0;
}

第一个编译正常。第二个给了我一个 make error 1。我可以整天来来回回——我看不到任何问题。有什么想法吗?

Had this:

rtable.insert ( pair<string,string>(destination,nhop) ); // route insertion
return 0;

Changed it to this:

if (rtable.insert ( pair<string,string>(destination,nhop)) == 0){
    return 0;
}

First one compiles fine. Second one gives me a make error 1. I can go back and forth all day -- I can't see any issues. Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

梦过后 2024-09-12 22:18:43

std::map::insert() 的重载返回一个 std::pair。你不能将其与零进行比较。

bool 元素告诉您是否插入了新元素;如果你想与之比较,你可以简单地使用:

if (rtable.insert(pair<string,string>(destination,nhop)).second)
    return 0

That overload of std::map::insert() returns a std::pair<iterator, bool>. You can't compare that against zero.

That bool element tells you whether a new element was inserted; if you want to compare against that you can simply use:

if (rtable.insert(pair<string,string>(destination,nhop)).second)
    return 0
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文