0

I'm just starting to take C++ courses online and right now, I'm doing vectors. Can someone please tell me what I did wrong on line 30 and 31? I can't seem to output what is in vector_2d at index 0 and 1. Thanks!

# include <iostream>
# include <vector>
using namespace std;

int main()
{
    vector <int> vector1 {};
    vector <int> vector2 {};

    vector1.push_back(10);
    vector1.push_back(20);

    cout << vector1.at(0) << endl;
    cout << vector1.at(1) << endl;
    cout << vector1.size() << endl;



    vector2.push_back(100);
    vector2.push_back(200);

    cout << vector2.at(0) << endl;
    cout << vector2.at(1) << endl;

    vector <vector <int>> vector_2d {};

    vector_2d.push_back(vector1);
    vector_2d.push_back(vector2);

    cout << vector_2d.at(0) << endl;
    cout << vector_2d.at(1) << endl;
    
    return 0;
}

Update, I've copied and pasted below most of the complete error output, I'm limited to 30,000 characters. :

C:\Users\FT86TT\AppData\Local\JetBrains\CLion2021.2\cygwin_cmake\bin\cmake.exe --build "/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/cmake-build-debug" --target untitled14 -- -j 6
Scanning dependencies of target untitled14
[ 50%] Building CXX object CMakeFiles/untitled14.dir/main.cpp.o
/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp: In function 'int main()':
/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:32:10: error: no match for 'operator<<' (operand types are 'std::ostream' {aka 'std::basic_ostream<char>'} and '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'})
   32 |     cout << vector_2d.at(0) << endl;
      |     ~~~~ ^~ ~~~~~~~~~~~~~~~
      |     |                   |
      |     |                   __gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type {aka std::vector<int>}
      |     std::ostream {aka std::basic_ostream<char>}
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:108:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ostream_type& (*)(std::basic_ostream<_CharT, _Traits>::__ostream_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  108 |       operator<<(__ostream_type& (*__pf)(__ostream_type&))
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:108:36: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'std::basic_ostream<char>::__ostream_type& (*)(std::basic_ostream<char>::__ostream_type&)' {aka 'std::basic_ostream<char>& (*)(std::basic_ostream<char>&)'}
  108 |       operator<<(__ostream_type& (*__pf)(__ostream_type&))
      |                  ~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:117:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__ios_type& (*)(std::basic_ostream<_CharT, _Traits>::__ios_type&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>; std::basic_ostream<_CharT, _Traits>::__ios_type = std::basic_ios<char>]'
  117 |       operator<<(__ios_type& (*__pf)(__ios_type&))
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:117:32: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'std::basic_ostream<char>::__ios_type& (*)(std::basic_ostream<char>::__ios_type&)' {aka 'std::basic_ios<char>& (*)(std::basic_ios<char>&)'}
  117 |       operator<<(__ios_type& (*__pf)(__ios_type&))
      |                  ~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:127:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  127 |       operator<<(ios_base& (*__pf) (ios_base&))
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:127:30: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'std::ios_base& (*)(std::ios_base&)'
  127 |       operator<<(ios_base& (*__pf) (ios_base&))
      |                  ~~~~~~~~~~~~^~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:166:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  166 |       operator<<(long __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:166:23: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'long int'
  166 |       operator<<(long __n)
      |                  ~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:170:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  170 |       operator<<(unsigned long __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:170:32: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'long unsigned int'
  170 |       operator<<(unsigned long __n)
      |                  ~~~~~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:174:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(bool) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  174 |       operator<<(bool __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:174:23: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'bool'
  174 |       operator<<(bool __n)
      |                  ~~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:826,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:91:5: note: candidate: 'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(short int) [with _CharT = char; _Traits = std::char_traits<char>]'
   91 |     basic_ostream<_CharT, _Traits>::
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:92:22: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'short int'
   92 |     operator<<(short __n)
      |                ~~~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:181:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(short unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  181 |       operator<<(unsigned short __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:181:33: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'short unsigned int'
  181 |       operator<<(unsigned short __n)
      |                  ~~~~~~~~~~~~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:826,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:105:5: note: candidate: 'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(int) [with _CharT = char; _Traits = std::char_traits<char>]'
  105 |     basic_ostream<_CharT, _Traits>::
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:106:20: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'int'
  106 |     operator<<(int __n)
      |                ~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:192:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  192 |       operator<<(unsigned int __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:192:31: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'unsigned int'
  192 |       operator<<(unsigned int __n)
      |                  ~~~~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:201:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  201 |       operator<<(long long __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:201:28: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'long long int'
  201 |       operator<<(long long __n)
      |                  ~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:205:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long long unsigned int) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  205 |       operator<<(unsigned long long __n)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:205:37: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'long long unsigned int'
  205 |       operator<<(unsigned long long __n)
      |                  ~~~~~~~~~~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:220:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  220 |       operator<<(double __f)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:220:25: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'double'
  220 |       operator<<(double __f)
      |                  ~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:224:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(float) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  224 |       operator<<(float __f)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:224:24: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'float'
  224 |       operator<<(float __f)
      |                  ~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:232:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(long double) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  232 |       operator<<(long double __f)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:232:30: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'long double'
  232 |       operator<<(long double __f)
      |                  ~~~~~~~~~~~~^~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:245:7: note: candidate: 'std::basic_ostream<_CharT, _Traits>::__ostream_type& std::basic_ostream<_CharT, _Traits>::operator<<(const void*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__ostream_type = std::basic_ostream<char>]'
  245 |       operator<<(const void* __p)
      |       ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:245:30: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'const void*'
  245 |       operator<<(const void* __p)
      |                  ~~~~~~~~~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:826,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:119:5: note: candidate: 'std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT, _Traits>::operator<<(std::basic_ostream<_CharT, _Traits>::__streambuf_type*) [with _CharT = char; _Traits = std::char_traits<char>; std::basic_ostream<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]'
  119 |     basic_ostream<_CharT, _Traits>::
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ostream.tcc:120:34: note:   no known conversion for argument 1 from '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} to 'std::basic_ostream<char>::__streambuf_type*' {aka 'std::basic_streambuf<char>*'}
  120 |     operator<<(__streambuf_type* __sbin)
      |                ~~~~~~~~~~~~~~~~~~^~~~~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/string:55,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/locale_classes.h:40,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ios_base.h:41,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:38,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/basic_string.h:6530:5: note: candidate: 'template<class _CharT, class _Traits, class _Alloc> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::basic_string<_CharT, _Traits, _Alloc>&)'
 6530 |     operator<<(basic_ostream<_CharT, _Traits>& __os,
      |     ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/basic_string.h:6530:5: note:   template argument deduction/substitution failed:
/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:32:27: note:   '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'} is not derived from 'const std::basic_string<_CharT, _Traits, _Alloc>'
   32 |     cout << vector_2d.at(0) << endl;
      |                           ^
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/bits/ios_base.h:46,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ios:42,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:38,
                 from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/system_error:263:5: note: candidate: 'template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, const std::error_code&)'
  263 |     operator<<(basic_ostream<_CharT, _Traits>& __os, const error_code& __e)
      |     ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/system_error:263:5: note:   template argument deduction/substitution failed:
/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:32:25: note:   cannot convert 'vector_2d.std::vector<std::vector<int> >::at(0)' (type '__gnu_cxx::__alloc_traits<std::allocator<std::vector<int> >, std::vector<int> >::value_type' {aka 'std::vector<int>'}) to type 'const std::error_code&'
   32 |     cout << vector_2d.at(0) << endl;
      |             ~~~~~~~~~~~~^~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/iostream:39,
                 from /cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:506:5: note: candidate: 'template<class _CharT, class _Traits> std::basic_ostream<_CharT, _Traits>& std::operator<<(std::basic_ostream<_CharT, _Traits>&, _CharT)'
  506 |     operator<<(basic_ostream<_CharT, _Traits>& __out, _CharT __c)
      |     ^~~~~~~~
/usr/lib/gcc/x86_64-pc-cygwin/11/include/c++/ostream:506:5: note:   template argument deduction/substitution failed:
/cygdrive/c/Users/FT86TT/Desktop/COP 3363/untitled14/main.cpp:32:27: note:   deduced conflicting types for parameter '_CharT' ('char' and 'std::vector<int>')
   32 |     cout << vector_2d.at(0) << endl;
      |                           ^
Vlad from Moscow
  • 301,070
  • 26
  • 186
  • 335
Newbie
  • 1
  • 1
  • 1
    Please [edit] your question to add a comment on the line you get the error, And please copy-paste the *full* and *complete* error output into the question. – Some programmer dude Dec 13 '21 at 07:50
  • 2
    As a (probable) hint: What type of object will e.g. `vector_2d.at(0)` return? And is there a stream output operator `<<` overload for that type? – Some programmer dude Dec 13 '21 at 07:51
  • 1
    The compiler error, while probably looking like gibberish to you, actually contains a precise description of the problem. It's a good idea to practice reading error messages. And if you are writing a question about an error message, it's best to include the entire message for those of us who do read it. – paddy Dec 13 '21 at 07:54
  • https://stackoverflow.com/questions/24609915/stdvector-cannot-bind-stdostream-aka-stdbasic-ostreamchar-lvalue-t – Igor Dec 13 '21 at 07:55

3 Answers3

1

The elements of the vector vector_2d are in turn objects of the type std::vector<int>.

vector <vector <int>> vector_2d {};

There is no standard overloaded operator << for vectors. So the compiler issues error messages for these statements

cout << vector_2d.at(0) << endl;
cout << vector_2d.at(1) << endl;

You could use the range based for loop to output elements of the vectors as for example

for ( const auto &item : vector_2d.at(0) )
{
    std::cout << item << ' ';
}
std::cout << '\n';

for ( const auto &item : vector_2d.at(1) )
{
    std::cout << item << ' ';
}
std::cout << '\n';

Otherwise you need to overload the operator << for the class std::vector<int> yourself as for example

$include <iostream>
#include <vector>

std::ostream &operator <<( std::ostream &os, const std::vector<int> &v )
{
    for (const auto &item : v)
    {
        os << item << ' ';
    }

    return os;
}

int main()
{
    std::vector<int> v = { 1, 2, 3, 4, 5 };

    std::cout << v << '\n';
}

And call the operator like

std::cout << vector_2d.at(0) << '\n';

Pay attention to that this initialization of the vectors

vector <int> vector1 {};
vector <int> vector2 {};

is redundant and has no effect. You could just write

vector <int> vector1;
vector <int> vector2;

In the both cases empty vectors are defined.

Bear in mind that for your program there is no great sense to use the member function at. You could use the subscript operator like

vector_2d[0]

Otherwise when you are using the member function at when it is better to enclose it in a try-catch block.

Vlad from Moscow
  • 301,070
  • 26
  • 186
  • 335
-1

vector_2d is of type std::vector<std::vector<int>>, so vector_2d.at(0) and vector_2d.at(1) is of type std::vector. Since std::cout don't know how to print an object of type std::vector<int>, it gives an error.

If you want to print the whole vector, do:

for(const auto &i : vector_2d.at(0))
{
    std::cout << i << ' ';
}
std::cout << '\n'
for(const auto &i : vector_2d.at(1))
{
    std::cout << i << ' ';
}
-1

I changed:

cout << vector_2d.at(0) << endl;
cout << vector_2d.at(1) << endl;

to:

cout << vector_2d.at(0).at(0) << " " << vector_2d.at(0).at(1) << endl;
cout << vector_2d.at(1).at(0) << " " << vector_2d.at(1).at(1) << endl;

Thanks all!

Newbie
  • 1
  • 1