C++ gcc和clang都不能编译循环程序

C++ gcc和clang都不能编译循环程序,c++,gcc,vector,clang,C++,Gcc,Vector,Clang,我一直无法让gcc和clang编译我为教科书中的练习编写的这个简单程序。该程序的目标是从标准输入接受2个简单的整数值,然后将这2个数值打印到标准输出。我写的程序如下: #include<iostream> #include<string> #include<vector> #include<algorithm> #include<cmath> using namespace std; inline void keep_window_o

我一直无法让gcc和clang编译我为教科书中的练习编写的这个简单程序。该程序的目标是从标准输入接受2个简单的整数值,然后将这2个数值打印到标准输出。我写的程序如下:

#include<iostream>
#include<string>
#include<vector>
#include<algorithm>
#include<cmath>

using namespace std;
inline void keep_window_open() {char ch; cin>>ch;}

int main() 
{

  vector<int> vect;
  int number;
  int i = 0 ;
  while (cin >> number && vect.size() < 3) 
    {
    vect.push_back(number);
    }

  cout << vect << '\n';

}  
#包括
#包括
#包括
#包括
#包括
使用名称空间std;
内联void保持窗口打开({char ch;cin>>ch;}
int main()
{
向量向量;
整数;
int i=0;
而(cin>>数字和向量大小()<3)
{
矢量推回(数字);
}

cout不能像那样打印整个向量。请使用循环:

for (auto value : vect)
    std::cout << value << ' ';
for(自动值:vect)

std::cout没有
操作符更改这部分代码

  while (cin >> number && vect.size() < 3) 
    {
    vect.push_back(number);
    }

  cout << vect << '\n';
while(cin>>number&&vect.size()<3)
{
矢量推回(数字);
}
电话号码)
{
矢量推回(数字);
}

对于(int x:vect)来说,这个重载不是UB吗?我刚刚修复了
*I
-应该是
I
。否则,我不确定有什么UB?实际上可能没问题。问题是,通过添加这个重载,您是否向
std
命名空间添加了一些内容。“一些东西”可以包括模板专门化,但我不确定重载的位置。我必须进行一些阅读。这不适用于所有
运算符吗
std::ostream& operator<<(std::ostream& os, std::vector<int> v)
{
   for(auto i : v)
   {
      os << i << ' ';
   }
   return os;
}
   for(auto i : vect)
   {
      std::cout << i << ' ';
   }
  while (cin >> number && vect.size() < 3) 
    {
    vect.push_back(number);
    }

  cout << vect << '\n';
  while ( vect.size() < 3 && cin >> number  ) 
  {
    vect.push_back( number );
  }

  for ( int x : vect ) cout << x << '\n';