Can we have vector of vector?

This is a discussion on Can we have vector of vector? within the C++ Programming forums, part of the General Programming Boards category; Can we have vector of vector? e.g. vector <vector<string>>vBig;...

  1. #1
    Registered User
    Join Date
    Jan 2008
    Posts
    24

    Question Can we have vector of vector?

    Can we have vector of vector?
    e.g.
    vector <vector<string>>vBig;

  2. #2
    the hat of redundancy hat nvoigt's Avatar
    Join Date
    Aug 2001
    Location
    Hannover, Germany
    Posts
    3,139
    Yes.
    hth
    -nv

    She was so Blonde, she spent 20 minutes looking at the orange juice can because it said "Concentrate."

    When in doubt, read the FAQ.
    Then ask a smart question.

  3. #3
    Registered User
    Join Date
    Jan 2008
    Posts
    24
    Thanks a lot nvoigt. :-)

  4. #4
    Cat without Hat CornedBee's Avatar
    Join Date
    Apr 2003
    Posts
    8,893
    But you need to put a space between the two >, or the compiler will parse it as a >> operator.
    All the buzzt!
    CornedBee

    "There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
    - Flon's Law

  5. #5
    Registered User
    Join Date
    Jan 2008
    Posts
    24
    Thanks a lot CornedBee

  6. #6
    Algorithm Dissector iMalc's Avatar
    Join Date
    Dec 2005
    Location
    New Zealand
    Posts
    6,302
    Quote Originally Posted by CornedBee View Post
    But you need to put a space between the two >, or the compiler will parse it as a >> operator.
    According to the standard probably, but newer versions of MSVC have actually been made smart enough to work out what you mean when you use >> there, if it can.
    Note that this is not really a good thing either as it encourages you to write non-portable code.
    My homepage
    Advice: Take only as directed - If symptoms persist, please see your debugger

    Linus Torvalds: "But it clearly is the only right way. The fact that everybody else does it some other way only means that they are wrong"

  7. #7
    C++まいる!Cをこわせ! Elysia's Avatar
    Join Date
    Oct 2007
    Posts
    22,549
    AFAIK, MSVC has been smart enough to spot inccorect usage of templates in form of >> since earlier versions. It would complain >> is invalid with templates, it must be > >, but it doesn't report syntax error. It's just Microsoft went one step further to eleminate the restriction in later versions.
    I don't really understand why the standard specifies you must use > > either, since it's rather absurd. It doesn't really matter if it can be mistaken for the operator or not, since it's the compiler vendor's work to make sure it works. It messes up style too. Microsoft's compiler can do it, so why not others?
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  8. #8
    C++ Witch laserlight's Avatar
    Join Date
    Oct 2003
    Location
    Singapore
    Posts
    21,652
    According to the standard probably, but newer versions of MSVC have actually been made smart enough to work out what you mean when you use >> there, if it can.
    Note that this is not really a good thing either as it encourages you to write non-portable code.
    Looking on the good side, at least the non-portable code will become standard (and hopefully portable) in a few years' time (C++0x).

    I don't really understand why the standard specifies you must use > > either, since it's rather absurd.
    The principle of greedy matching. However, eventually the C++ standard committee people decided that it is better to just let the more natural syntax be used, thus the change.
    C + C++ Compiler: MinGW port of GCC
    Version Control System: Bazaar

    Look up a C++ Reference and learn How To Ask Questions The Smart Way

  9. #9
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    Quote Originally Posted by iMalc View Post
    According to the standard probably, but newer versions of MSVC have actually been made smart enough to work out what you mean when you use >> there, if it can.
    Note that this is not really a good thing either as it encourages you to write non-portable code.
    Yeah, and another thing I hate about MSVC is that it doesn't complain if you forget to include a standard header file and silently includes it for you. Then you try compiling on UNIX and get errors about the missing header files. Maybe there's a switch to turn off that "feature", but I haven't been motivated enough to look for it yet.

  10. #10
    C++まいる!Cをこわせ! Elysia's Avatar
    Join Date
    Oct 2007
    Posts
    22,549
    There's an option to turn off Microsoft extensions. Only problem is that it's rather useless since it produces tons of errors if you include typical Windows headers!
    I'm thinking you should be able to turn off (and on) an option dynamically; otherwise it's rather useless.
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  11. #11
    Cat without Hat CornedBee's Avatar
    Join Date
    Apr 2003
    Posts
    8,893
    Quote Originally Posted by cpjust View Post
    Yeah, and another thing I hate about MSVC is that it doesn't complain if you forget to include a standard header file and silently includes it for you. Then you try compiling on UNIX and get errors about the missing header files. Maybe there's a switch to turn off that "feature", but I haven't been motivated enough to look for it yet.
    It does no such thing. It's just that some standard library parts are implemented in terms of other parts. For example, some parts of <locale> require the std::string class. Also, some parts of the stream library require locales. Thus, when you #include <iostream>, you get parts of the locale system and thus parts of the string library.

    This problem affects all standard libraries, but to different degrees. Some go to greater pains in order to avoid this stuff, others to lesser. In one library you may get A by including B, in the other you may get B by including A. And so on.

    Nothing MS-specific.
    All the buzzt!
    CornedBee

    "There is not now, nor has there ever been, nor will there ever be, any programming language in which it is the least bit difficult to write bad code."
    - Flon's Law

  12. #12
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    Quote Originally Posted by CornedBee View Post
    It does no such thing. It's just that some standard library parts are implemented in terms of other parts. For example, some parts of <locale> require the std::string class. Also, some parts of the stream library require locales. Thus, when you #include <iostream>, you get parts of the locale system and thus parts of the string library.

    This problem affects all standard libraries, but to different degrees. Some go to greater pains in order to avoid this stuff, others to lesser. In one library you may get A by including B, in the other you may get B by including A. And so on.

    Nothing MS-specific.
    Oh I would have to disagree with the "Nothing MS-specific" part. If you forget even a single header file gcc will complain, but MSVC compiles without so much as a peep. Whether this is intentional or simply because required headers were included by other headers, I don't know, but the result is annoying nonetheless.

  13. #13
    C++まいる!Cをこわせ! Elysia's Avatar
    Join Date
    Oct 2007
    Posts
    22,549
    I have not encountered this to my knowledge. What functions is that and what headers?
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

  14. #14
    and the hat of sweating
    Join Date
    Aug 2007
    Location
    Toronto, ON
    Posts
    3,545
    Here's an example where <cstdio> & <cstring> are required, but VC++ compiles it anyways. They're probably included in <iostream> because if you remove that, you get the expected errors.
    Code:
    #include <iostream>
    
    //#include <cstdio>
    //#include <cstring>
    
    using namespace std;
    
    int main()
    {
    	char str[] = "fdsfsdfsdfs";
    	printf( "str has %d chars", strlen( str ) );
    
    	return 0;
    }

  15. #15
    C++まいる!Cをこわせ! Elysia's Avatar
    Join Date
    Oct 2007
    Posts
    22,549
    Code:
    1>Note: including file: H:\Apps\Microsoft Visual Studio 9.0\VC\include\iostream
    1>Note: including file:  H:\Apps\Microsoft Visual Studio 9.0\VC\include\istream
    1>Note: including file:   H:\Apps\Microsoft Visual Studio 9.0\VC\include\ostream
    1>Note: including file:    H:\Apps\Microsoft Visual Studio 9.0\VC\include\ios
    1>Note: including file:     H:\Apps\Microsoft Visual Studio 9.0\VC\include\xlocnum
    1>Note: including file:      H:\Apps\Microsoft Visual Studio 9.0\VC\include\climits
    1>Note: including file:       H:\Apps\Microsoft Visual Studio 9.0\VC\include\yvals.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\sal.h
    1>Note: including file:          h:\apps\microsoft visual studio 9.0\vc\include\codeanalysis\sourceannotations.h
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtassem.h
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\vadefs.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\use_ansi.h
    1>Note: including file:       H:\Apps\Microsoft Visual Studio 9.0\VC\include\limits.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:      H:\Apps\Microsoft Visual Studio 9.0\VC\include\cstdio
    1>Note: including file:       H:\Apps\Microsoft Visual Studio 9.0\VC\include\stdio.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\swprintf.inl
    1>Note: including file:      H:\Apps\Microsoft Visual Studio 9.0\VC\include\cstdlib
    1>Note: including file:       H:\Apps\Microsoft Visual Studio 9.0\VC\include\stdlib.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:      H:\Apps\Microsoft Visual Studio 9.0\VC\include\streambuf
    1>Note: including file:       H:\Apps\Microsoft Visual Studio 9.0\VC\include\xiosbase
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\xlocale
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\cstring
    1>Note: including file:          H:\Apps\Microsoft Visual Studio 9.0\VC\include\string.h
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\stdexcept
    1>Note: including file:          H:\Apps\Microsoft Visual Studio 9.0\VC\include\exception
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\xstddef
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\cstddef
    1>Note: including file:             H:\Apps\Microsoft Visual Studio 9.0\VC\include\stddef.h
    1>Note: including file:              H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\eh.h
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\malloc.h
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:          H:\Apps\Microsoft Visual Studio 9.0\VC\include\xstring
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\xmemory
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\new
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\xutility
    1>Note: including file:             H:\Apps\Microsoft Visual Studio 9.0\VC\include\utility
    1>Note: including file:              H:\Apps\Microsoft Visual Studio 9.0\VC\include\iosfwd
    1>Note: including file:               H:\Apps\Microsoft Visual Studio 9.0\VC\include\cwchar
    1>Note: including file:                H:\Apps\Microsoft Visual Studio 9.0\VC\include\wchar.h
    1>Note: including file:                 H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:                 H:\Apps\Microsoft Visual Studio 9.0\VC\include\wtime.inl
    1>Note: including file:               H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdbg.h
    1>Note: including file:                H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\typeinfo
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\xdebug
    1>Note: including file:         H:\Apps\Microsoft Visual Studio 9.0\VC\include\xlocinfo
    1>Note: including file:          H:\Apps\Microsoft Visual Studio 9.0\VC\include\xlocinfo.h
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\ctype.h
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:           H:\Apps\Microsoft Visual Studio 9.0\VC\include\locale.h
    1>Note: including file:            H:\Apps\Microsoft Visual Studio 9.0\VC\include\crtdefs.h
    1>Note: including file:        H:\Apps\Microsoft Visual Studio 9.0\VC\include\share.h
    Indeed. They are included automatically. I find it convenient, though, not annoying.
    I don't see what's so wrong with it?
    Quote Originally Posted by Adak View Post
    io.h certainly IS included in some modern compilers. It is no longer part of the standard for C, but it is nevertheless, included in the very latest Pelles C versions.
    Quote Originally Posted by Salem View Post
    You mean it's included as a crutch to help ancient programmers limp along without them having to relearn too much.

    Outside of your DOS world, your header file is meaningless.

Page 1 of 2 12 LastLast
Popular pages Recent additions subscribe to a feed

Similar Threads

  1. can some one please tell me the cause of the error ?
    By broli86 in forum C Programming
    Replies: 8
    Last Post: 06-26-2008, 08:36 PM
  2. syntax help?
    By scoobygoo in forum C++ Programming
    Replies: 1
    Last Post: 08-07-2007, 10:38 AM
  3. Vector class
    By Desolation in forum C++ Programming
    Replies: 2
    Last Post: 05-12-2007, 05:44 PM
  4. Need some help/advise for Public/Private classes
    By nirali35 in forum C++ Programming
    Replies: 8
    Last Post: 09-23-2006, 12:34 PM
  5. Certain functions
    By Lurker in forum C++ Programming
    Replies: 3
    Last Post: 12-26-2003, 12:26 AM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21