Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将对象变量用于multimap equal_range()_C++_Multimap - Fatal编程技术网

C++ 将对象变量用于multimap equal_range()

C++ 将对象变量用于multimap equal_range(),c++,multimap,C++,Multimap,我使用对象作为多重贴图的关键点。该对象是我创建的自定义日期类。我只是想知道是否可以使用对象中的变量来表示equal_range() 这是根据自定义日期对象中的月变量进行检查 这是这样的(伪代码) int一月=1; foundValues=myMultimap.equal_范围(一月); for(it=foundValues.first;it!=foundValues.second;++it) { cout关联容器的搜索成员仅对键起作用。它们之所以存在,是因为它们利用了容器的内部结构,确保在O(l

我使用对象作为多重贴图的关键点。该对象是我创建的自定义日期类。我只是想知道是否可以使用对象中的变量来表示equal_range()

这是根据自定义日期对象中的月变量进行检查

这是这样的(伪代码)

int一月=1;
foundValues=myMultimap.equal_范围(一月);
for(it=foundValues.first;it!=foundValues.second;++it)
{

cout关联容器的搜索成员仅对键起作用。它们之所以存在,是因为它们利用了容器的内部结构,确保在
O(log(n))
time(其中
n
是容器中的元素数)中查找值(或不存在值)


如果要查找序列中与条件匹配的所有元素,可能需要使用带有适当谓词的
std::copy_If()

为什么不首先使用月份作为键?如果日期包括年份,则它将不起作用,如“所有年份中的所有月份”不是range.Xymistech-原因是我需要搜索特定年份中特定月份的所有值。这就是为什么我使用date类作为键。我尝试使用格式为did/mm/yyyy的包含完整日期的字符串,但当我执行inorder travelsal时,多地图只按天排序。因此,当您查看输出时,天是按顺序,但月份和年份不是。啊。谢谢。我可以再次确认该函数吗。复制\u if(mymulti.begin(),my multi.end(),compmonth());类似这样的东西?您可以将其称为
std::copy\u if(multimap.begin(),multimap.end(),std::back\u inserter(target),compmonth())这个算法是C++ 2011中的新算法。如果你需要使用C++ 2003,你可以使用<代码> STD::ReaveWiSopiFixIf()/Cuth>,但是,显然,你需要否定谓词。
int january = 1;
foundValues = myMultimap.equal_range(january);

for (it=foundValues.first; it!=foundValues.second; ++it)
{
  cout << " " << (*it).second;
  cout << endl;
}