//不能用下标操作查询单词s是否存在,因为下标操作在单词不存在的 //情况下会往map中添加单词,正确的做法用find auto ret = wm.find(s); //find返回的是迭代器 if(ret == wm.end()) //这里必须新建一个set对象,内容为空,不然 //对此时返回的QueryResult对象中的有关wm对象的一切操作均会报错,因为没有分配内存,是不能使用的。 //智能指针使用前必须要里面有内容,也就是分配了内存 auto nodata = make_shared>(); return QueryResult(file,nodata,s); //注意迭代器其实就是一个指针,用->访问迭代器所指的pair return QueryResult(file,ret->second,s);

map的find(s)成员,目的是在map中查找关键字s的pair,找到后返回指向关键字为s的pair的迭代器,找不到那么就会返回尾后迭代器,切记 迭代器其实就是一个指针 ,用迭代器访问pair的first或者second成员方法是:iter->first 或 iter -> second

不能用.号。

QueryResult TextQuery::query(const string &s)const{//不能用下标操作查询单词s是否存在,因为下标操作在单词不存在的//情况下会往map中添加单词,正确的做法用findauto ret = wm.find(s); //find返回的是迭代器if(ret == wm.end()) { //这里必须新建一个set<line_no>对象,内容为空,不然 //对此时返回的QueryResult对象中的有关wm对象的一切操作均会.
C++ map find()用法一级目录二级目录三级目录 https://vimsky.com/examples/usage/ map -find-function-in-c-stl.html unordered_ map <int, int> my map ; my map .insert({1,2}); auto it = my map .find(1); // 返回 为迭代器 if (it != my map .end()) { // 不存在 返回 尾迭代器my map .end() cout << it->first << it->second <<
谢谢原博对我学习上的帮助,原文地址:https://www.cnblogs.com/Deribs4/p/4948351.html使用count, 返回 的是被查找元素的个数。如果有, 返回 1;否则, 返回 0。注意, map 中不存在相同元素,所以 返回 只能是1或0。使用find, 返回 的是被查找元素的位置,没有则 返回 map .end()。#include&lt;string&gt; #include&lt;cst...
当参数表为空时,表示该函数不从调用函数接受数据。   2、数 参数   传 调用:形参只有在函数被调用时,才被分配内存区域,并一直保留到函数 返回 时被撤销为止。形参和实参只是名字相同,各自占有各自的内存空间和生存周期,因此他并不能改变主调函数中的变量。   3、地址参数   传址调用:传送的是变量的地址,尽管主函数和被调函数各自在自己的变量上操作,但他们的地址是
unordered_ map 的find()函数 返回 一个迭代器,指向查找到的元素。如果在unordered_ map 中找到了指定的键,则 返回 指向该键 对的迭代器;否则, 返回 unordered_ map 的end()迭代器。 具体来说,find()函数的 返回 类型 是一个迭代器,可以使用auto关键字自动推断 类型 ,或者显式指定为unordered_ map 的迭代器 类型 ,如unordered_ map <Key, T>::iterator。 下面是一个示例,演示了如何使用find()函数并处理其 返回 : ```cpp #include <iostream> #include <unordered_ map > int main() { std::unordered_ map <std::string, int> u map ; // 插入键 对 u map ["apple"] = 5; u map ["banana"] = 2; u map ["orange"] = 8; // 使用find()查找元素 auto iter = u map .find("banana"); if (iter != u map .end()) { std::cout << "Found value: " << iter->second << std::endl; } else { std::cout << "Key not found!" << std::endl; return 0; 在这个示例中,我们创建了一个unordered_ map 对象,并插入了几个键 对。然后,我们使用find()函数来查找键为"banana"的元素。如果找到了该元素,我们打印出它的 ;否则,打印出"Key not found!"。输出结果将是: Found value: 2 需要注意的是,如果unordered_ map 中存在多个具有相同键的元素,则find()函数只 返回 第一个匹配的元素的迭代器。如果需要查找所有匹配的元素,可以结合使用equal_range()函数或使用范围遍历。
发狂的蜗牛: 不是;协议体系,以太网也是一套协议体系,它们之间是相互利用的关系,而不是相互依存的关系。 TCP/IP协议并不像以太网一样有其底层专门的硬件,但是它可以租用一切合适的硬件来为它充当物理层和链路层的角色。除了以太网交换 机,TCP/IP甚至可以用无线电波、红外线、USB、COM串口、ATM等作为其物理层和链路层。 以太网给TCP/IP充当了链路层,不一定代表它只能作用于链路层。我们知道以太网有自己的网络层编址和寻址机制,它有网络层的元素。 各种联网协议都有自己的层次,都在OSI模型中有自己的定义,只不过TCP/IP协议在网络层和传输层的功能应用得太广泛了,所以OSI的第三层 和第四层,几乎就是被TCP/IP协议给统治了,其他协议虽然也占有一席之地,但是相比TCP/IP的光辉就暗淡了许多。另外,TCP/IP没有统治链 路层和物理层,在这两层中,就是其他协议体系的天下,所以TCP/IP只能“租用”其他底层协议,比如以太网,来完成OSI开放系统互联的任务。 这就是PoP,意即Protocol over Protocol。PoP的思想,到处可见,因为没有人可以统治OSI的全部7层,毕竟需要大家相互合作。