Re: std::map with multi values
This is a multi-part message in MIME format.
----------------1872041237911003148
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit
On 2010-08-16 14:48:08 +0200, Victor Bazarov said:
On 8/16/2010 6:20 AM, Philipp Kraus wrote:
I'm using a std::map and I need two values in it. The key is a
std::string value and the value of the std::map must have two values
(named lower and upper).
Should I use a struct like
struct range {
T lower;
T upper;
range( const T& a, const T& b) :
lower(a), upper(b) {}
Apparently you need your type for something else, not just to store the
two values, yes? Otherwise you could just use std::pair<T,T>...
I had tried the std::pair<T,T>, but I can't compile it.
on
for(std::map<std::string, std::pair<T,T> >::iterator it =
m_initvalues.begin(); it != m_initvalues.end(); ++it)
(m_initvalues is declared std::map<std::string, std::pair<T,T> >
m_initvalues;) I get:
error: dependent-name 'std::map<std::basic_string<char,
std::char_traits<char>, std::allocator<char>
,std::pair<_ForwardIterator,
_ForwardIterator>,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<_ForwardIterator, _ForwardIterator> > > >::iterator' is
parsed as a non-type, but instantiation yields a type
worker.hpp:134: note: say 'typename std::map<std::basic_string<char,
std::char_traits<char>, std::allocator<char>
,std::pair<_ForwardIterator,
_ForwardIterator>,std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
,std::allocator<std::pair<const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
std::pair<_ForwardIterator, _ForwardIterator> > > >::iterator' if a
type is meant
Thanks
Phil
----------------1872041237911003148
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
<meta name="CocoaVersion" content="949.54">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 12.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 15.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 12.0px; line-height: 14.0px; font: 12.0px Helvetica; color: #000080}
p.p4 {margin: 0.0px 0.0px 0.0px 24.0px; font: 12.0px Helvetica; color: #008000}
p.p5 {margin: 0.0px 0.0px 0.0px 24.0px; font: 12.0px Helvetica; color: #008000; min-height: 14.0px}
p.p6 {margin: 0.0px 0.0px 0.0px 12.0px; font: 12.0px Helvetica; color: #000080; min-height: 14.0px}
p.p7 {margin: 0.0px 0.0px 0.0px 12.0px; font: 12.0px Helvetica; color: #000080}
p.p8 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p9 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Helvetica}
p.p10 {margin: 0.0px 0.0px 0.0px 0.0px; line-height: 14.0px; font: 12.0px Monaco}
span.s1 {color: #aa0d91}
span.s2 {color: #3f6e74}
</style>
</head>
<body>
<p class="p1">On 2010-08-16 14:48:08 +0200, Victor Bazarov said:</p>
<p class="p2"><br></p>
<p class="p3">On 8/16/2010 6:20 AM, Philipp Kraus wrote:</p>
<p class="p4">I'm using a std::map and I need two values in it. The key is a</p>
<p class="p4">std::string value and the value of the std::map must have two values</p>
<p class="p4">(named lower and upper).</p>
<p class="p4">Should I use a struct like</p>
<p class="p4">struct range {</p>
<p class="p4">T lower;</p>
<p class="p4">T upper;</p>
<p class="p5"><br></p>
<p class="p4">range( const T& a, const T& b) :</p>
<p class="p4">lower(a), upper(b) {}</p>
<p class="p6"><br></p>
<p class="p7">Apparently you need your type for something else, not just to store the two values, yes?<span class="Apple-converted-space">? </span>Otherwise you could just use std::pair<T,T>...</p>
<p class="p8"><br></p>
<p class="p9">I had tried the std::pair<T,T>, but I can't compile it.</p>
<p class="p8"><br></p>
<p class="p9">on</p>
<p class="p10"><span class="s1">for</span>(<span class="s2">std</span>::map<<span class="s2">std</span>::string, <span class="s2">std</span>::pair<<span class="s2">T</span>,<span class="s2">T</span>> >::iterator <span class="s2">it</span> = m_initvalues.begin(); <span class="s2">it</span> != m_initvalues.end(); ++<span class="s2">it</span>)<span class="Apple-converted-space">?</span></p>
<p class="p10">(m_initvalues is declared <span class="s2">std</span>::<span class="s2">map</span><<span class="s2">std</span>::string, <span class="s2">std</span>::pair<<span class="s2">T</span>,<span class="s2">T</span>> > m_initvalues;) I get:</p>
<p class="p8"><br></p>
<p class="p9">error: dependent-name 'std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::pair<_ForwardIterator, _ForwardIterator>,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<_ForwardIterator, _ForwardIterator> > > >::iterator' is parsed as a non-type, but instantiation yields a type</p>
<p class="p9">worker.hpp:134: note: say 'typename std::map<std::basic_string<char, std::char_traits<char>, std::allocator<char> >,std::pair<_ForwardIterator, _ForwardIterator>,std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >,std::allocator<std::pair<const std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<_ForwardIterator, _ForwardIterator> > > >::iterator' if a type is meant</p>
<p class="p8"><br></p>
<p class="p9">Thanks</p>
<p class="p8"><br></p>
<p class="p9">Phil</p>
</body>
</html>
----------------1872041237911003148--