Sponsored Content
Top Forums Programming find in multimap within multimap Post 302305412 by rameshmelam on Wednesday 8th of April 2009 09:45:29 PM
Old 04-08-2009
Question find in multimap within multimap

Hi, I am trying to use multimap of multimap, because i would like to have multiple keys like multimap[key1][key2] = value. this is happening if i use map. But when i use multimap of multimap, i have to use equal_range() to find the key in the first multimap then i am getting all the values from the second multimap using iterator. But it is getting slow for finding a value in second multimap for huge data collection. Please help me in finding in both the multiple maps faster.

Thanks for your help.

my sample code(am using GCC compiler in HPUX)

#include <iostream>
#include <string>
#include <map>
using namespace std;

typedef multimap<int, int> t_mmap_inner;
typedef t_mmap_inner::iterator it_minner;
typedef pair<t_mmap_inner::iterator,t_mmap_inner::iterator> mit_inner;
typedef multimap<string, t_mmap_inner > t_mmap_outer;
typedef t_mmap_outer::iterator it_mouter;
typedef pair<t_mmap_outer::iterator,t_mmap_outer::iterator> mit_outer;


int main() {

t_mmap_outer mmm;
t_mmap_inner mm;
mm.insert(pair<int,int>(6,5));
mm.insert(pair<int,int>(7,6));
mm.insert(pair<int,int>(7,5));
mm.insert(pair<int,int>(3,5));
cout << "inner map contains" << endl;
for (it_minner j = mm.begin(); j != mm.end(); ++j)
cout << " " << j->first << ", " << j->second << '\n';
mmm.insert(pair<string, t_mmap_inner>("ABC",mm));

mm.clear();
mm.insert(pair<int,int>(10,5));
mm.insert(pair<int,int>(7,10));
mmm.insert(pair<string, t_mmap_inner>("EFG",mm));

mm.clear();
mm.insert(pair<int,int>(7,15));
mm.insert(pair<int,int>(13,7));
mmm.insert(pair<string, t_mmap_inner>("JKL",mm));
mmm.insert(pair<string, t_mmap_inner>("ABC",mm));

//printing all the values in the outer map
for (it_mouter i = mmm.begin(); i != mmm.end(); ++i) {
cout << i->first << '\n';
for (it_minner j = i->second.begin(); j != i->second.end(); ++j)
cout << " " << j->first << ", " << j->second << '\n';
}
mit_inner mit;
it_minner itm;
it_minner itmi;

mit_outer mito;
it_mouter itmo;
//finding all the items with ABC and 7
mito = mmm.equal_range("ABC");
for (itmo=mito.first; itmo!=mito.second; ++itmo){
cout << " " << (*itmo).first << endl;
for (itm = itmo->second.begin(); itm != itmo->second.end(); ++itm){
if (itm->first==7)
cout << itm->second << endl;
}
}
mmm.clear();
return 0;
}
 

9 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

command find returned bash: /usr/bin/find: Argument list too long

Hello, I create a file touch 1201093003 fichcomp and inside a repertory (which hava a lot of files) I want to list all files created before this file : find *.* \! -maxdepth 1 - newer fichcomp but this command returned bash: /usr/bin/find: Argument list too long but i make a filter all... (1 Reply)
Discussion started by: yacsil
1 Replies

2. Shell Programming and Scripting

Little bit weired : Find files in UNIX w/o using find or where command

Yes , I have to find a file in unix without using any find or where commands.Any pointers for the same would be very helpful as i am beginner in shell scritping and need a solution for the same. Thanks in advance. Regards Jatin Jain (10 Replies)
Discussion started by: jatin.jain
10 Replies

3. Programming

C++ multimap -find

Hello I need a sample program using multimap class People { public: char CHR_NM1; char CHR_NM2; char CHR_CD1; char CHR_CD2; char VL1; char VL2; char MODULE_NUM; }; } multimap<string, People>& peopleMap I need to find a pair with a key BRAND010846 (3 Replies)
Discussion started by: dhanamurthy
3 Replies

4. UNIX for Dummies Questions & Answers

how to find a file named vijay in a directory using find command

I need to find whether there is a file named vijay is there or not in folder named "opt" .I tried "ls *|grep vijay" but it showed permission problem. so i need to use find command (6 Replies)
Discussion started by: amirthraj_12
6 Replies

5. Linux

Simplified find command to find multiple file types

Hi, I'm using the following command to find the multiple requierd file types and its working fine find . -name "*.pl" -o -name "*.pm" -o -name "*.sql" -o -name "*.so" -o -name "*.sh" -o -name "*.java" -o -name "*.class" -o -name "*.jar" -o -name "*.gz" -o -name "*.Z" -type f Though... (2 Replies)
Discussion started by: vickramshetty
2 Replies

6. Shell Programming and Scripting

How to use grep & find command to find references to a particular file

Hi all , I'm new to unix I have a checked project , there exists a file called xxx.config . now my task is to find all the files in the checked out project which references to this xxx.config file. how do i use grep or find command . (2 Replies)
Discussion started by: Gangam
2 Replies

7. Shell Programming and Scripting

find: missing argument to `-exec' while redirecting using find in perl

Hi Friends, Please help me to sort out this problem, I am running this in centos o/s and whenever I run this script I am getting "find: missing argument to `-exec' " but when I run the same code in the command line I didn't find any problem. I am using perl script to run this ... (2 Replies)
Discussion started by: ramkumarselvam
2 Replies

8. Shell Programming and Scripting

How to find a file with a specific pattern for current sysdate & upon find email the details?

I need assistance with following requirement, I am new to Unix. I want to do the following task but stuck with file creation date(sysdate) Following is the requirement I need to create a script that will read the abc/xyz/klm folder and look for *.err files for that day’s date and then send an... (4 Replies)
Discussion started by: PreetArul
4 Replies

9. Shell Programming and Scripting

Find string1, when true find string2 in reverse direction

Hello, This is a bit complicated for me. My scenario in MyFile: Search string1, When string1 is found, grep the line containing string1, go back over that line in upward direction and grep the first line containing string2. Here is an example: MyFile His email address... (17 Replies)
Discussion started by: baris35
17 Replies
std::__profile::multimap< _Key, _Tp, _Compare, _Allocator >(3cxx)		 std::__profile::multimap< _Key, _Tp, _Compare, _Allocator >(3cxx)

NAME
std::__profile::multimap< _Key, _Tp, _Compare, _Allocator > - SYNOPSIS
Inherits multimap< _Key, _Tp, _Compare, _Allocator >. Public Types typedef _Allocator allocator_type typedef _Base::const_iterator const_iterator typedef _Base::const_pointer const_pointer typedef _Base::const_reference const_reference typedef _Base::const_reverse_iterator const_reverse_iterator" typedef _Base::difference_type difference_type typedef _Base::iterator iterator typedef _Compare key_compare typedef _Key key_type typedef _Tp mapped_type typedef _Base::pointer pointer typedef _Base::reference reference typedef _Base::reverse_iterator reverse_iterator typedef _Base::size_type size_type typedef std::pair< const _Key, _Tp > value_type" Public Member Functions multimap (const _Compare &__comp=_Compare(), const _Allocator &__a=_Allocator()) template<typename _InputIterator > multimap (_InputIterator __first, _InputIterator __last, const _Compare &__comp=_Compare(), const _Allocator &__a=_Allocator()) multimap (const multimap &__x) multimap (const _Base &__x) multimap (multimap &&__x) multimap (initializer_list< value_type > __l, const _Compare &__c=_Compare(), const allocator_type &__a=allocator_type()) _Base & _M_base () const _Base & _M_base () const iterator begin () const_iterator begin () const const_iterator cbegin () const const_iterator cend () const void clear () const_reverse_iterator crbegin () const const_reverse_iterator crend () const iterator end () const_iterator end () const std::pair< iterator, iterator > equal_range (const key_type &__x) std::pair< const_iterator, const_iterator > equal_range (const key_type &__x) const " iterator erase (const_iterator __position) iterator erase (iterator __position) size_type erase (const key_type &__x) iterator erase (const_iterator __first, const_iterator __last) iterator find (const key_type &__x) const_iterator find (const key_type &__x) const iterator insert (const value_type &__x) template<typename _Pair , typename = typename std::enable_if<std::is_convertible<_Pair, value_type>::value>::type> iterator insert (_Pair &&__x) void insert (std::initializer_list< value_type > __list) iterator insert (const_iterator __position, const value_type &__x) template<typename _Pair , typename = typename std::enable_if<std::is_convertible<_Pair, value_type>::value>::type> iterator insert (const_iterator __position, _Pair &&__x) template<typename _InputIterator > void insert (_InputIterator __first, _InputIterator __last) iterator lower_bound (const key_type &__x) const_iterator lower_bound (const key_type &__x) const multimap & operator= (const multimap &__x) multimap & operator= (multimap &&__x) multimap & operator= (initializer_list< value_type > __l) reverse_iterator rbegin () const_reverse_iterator rbegin () const reverse_iterator rend () const_reverse_iterator rend () const void swap (multimap &__x) iterator upper_bound (const key_type &__x) const_iterator upper_bound (const key_type &__x) const Detailed Description template<typename _Key, typename _Tp, typename _Compare = std::less<_Key>, typename _Allocator = std::allocator<std::pair<const _Key, _Tp> >>class std::__profile::multimap< _Key, _Tp, _Compare, _Allocator > Class std::multimap wrapper with performance instrumentation. Definition at line 41 of file profile/multimap.h. Author Generated automatically by Doxygen for libstdc++ from the source code. libstdc++ Tue Nov 27 2012std::__profile::multimap< _Key, _Tp, _Compare, _Allocator >(3cxx)
All times are GMT -4. The time now is 07:07 AM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy