C++代码中map的find函数问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++代码中map的find函数问题相关的知识,希望对你有一定的参考价值。
#include <iostream>
#include <string.h>
#include <map>
struct test
std::map<std::string, int> mapx;
test()
for (int i=0; i<10; i++)
mapx.insert(std::make_pair("xxx", i));
;
int main()
std::map<int, std::string>::iterator itr;
test x;
itr=x.mapx.find(std::string("xxx"));
std::cout<<itr->second<<std::endl;
return 0;
为什么会报错? 报错信息如下
test.cpp:15: error: no match for 'operator=' in 'itr = ((std::map<std::string, int, std::less<std::string>, std::allocator<std::pair<const std::string, int> > >*)(&x))->std::map<_Key, _Tp, _Compare, _Alloc>::find [with _Key = std::string, _Tp = int, _Compare = std::less<std::string>, _Alloc = std::allocator<std::pair<const std::string, int> >](((const std::string&)((const std::string*)(&string(((const char*)"xxx"), ((const std::allocator<char>&)((const std::allocator<char>*)(&allocator<char>()))))))))'
/usr/lib/gcc/x86_64-redhat-linux/3.4.5/../../../../include/c++/3.4.5/bits/stl_tree.h:152: note: candidates are: std::_Rb_tree_iterator<std::pair<const int, std::string> >& std::_Rb_tree_iterator<std::pair<const int, std::string> >::operator=(const std::_Rb_tree_iterator<std::pair<const int, std::string> >&)
明显不一致嘛本回答被提问者和网友采纳
c++ std::map find 用法
用find函数来定位数据出现位置,它返回的一个迭代器,
- 当数据出现时,它返回数据所在位置的迭代器,
- 如果map中没有要查找的数据,它返回的迭代器等于end函数返回的迭代器
#include <map>
#include <string>
#include <iostream>
Using namespace std;
Int main()
{
Map<int, string> mapStudent;
mapStudent.insert(pair<int, string>(1, “student_one”));
mapStudent.insert(pair<int, string>(2, “student_two”));
mapStudent.insert(pair<int, string>(3, “student_three”));
map<int, string>::iterator iter;
iter = mapStudent.find(1);
if(iter != mapStudent.end())
{
Cout<<”Find, the value is ”<<iter->second<<endl;
}
Else
{
Cout<<”Do not Find”<<endl;
}
}
以上是关于C++代码中map的find函数问题的主要内容,如果未能解决你的问题,请参考以下文章
find() 或 insert() 上的 C++ unordered_map SIGSEGV
第十三篇:multimap容器和multiset容器中的find操作