C++ gcc和clang都不能编译循环程序
我一直无法让gcc和clang编译我为教科书中的练习编写的这个简单程序。该程序的目标是从标准输入接受2个简单的整数值,然后将这2个数值打印到标准输出。我写的程序如下: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
#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';