C++ 向量<;int>;v(istream_迭代器<;int>;(cin),istream_迭代器<;int>;()); #包括 #包括 #包括 #包括 使用名称空间std; int main() { 向量v(istream_迭代器(cin),istream_迭代器());//编译错误?! 复制(v.begin(),v.end(),ostream_迭代器(cout,“\n”); 返回0; }

C++ 向量<;int>;v(istream_迭代器<;int>;(cin),istream_迭代器<;int>;()); #包括 #包括 #包括 #包括 使用名称空间std; int main() { 向量v(istream_迭代器(cin),istream_迭代器());//编译错误?! 复制(v.begin(),v.end(),ostream_迭代器(cout,“\n”); 返回0; },c++,declaration,C++,Declaration,为什么那条线会出错? 我知道编译器把“v”当作函数!惊人的…这个问题被称为C++ 尝试将第一行更改为以下内容(请注意附加括号): 向量v((istream_迭代器(cin)),istream_迭代器(); 这个问题称为C++ 尝试将第一行更改为以下内容(请注意附加括号): 向量v((istream_迭代器(cin)),istream_迭代器(); 正如@Kyle Lutz所指出的,这是最棘手的解析问题,通常通过将初始化更改为以下内容来解决: vector<int> v((istrea

为什么那条线会出错?
我知道编译器把“v”当作函数!惊人的…

这个问题被称为C++

尝试将第一行更改为以下内容(请注意附加括号):

向量v((istream_迭代器(cin)),istream_迭代器();
这个问题称为C++

尝试将第一行更改为以下内容(请注意附加括号):

向量v((istream_迭代器(cin)),istream_迭代器();
正如@Kyle Lutz所指出的,这是最棘手的解析问题,通常通过将初始化更改为以下内容来解决:

vector<int> v((istream_iterator<int>(cin)), istream_iterator<int>());
vector v=vector(istream_迭代器(cin),istream_迭代器());

这比“双括号技巧”更容易理解。

正如@Kyle Lutz所指定的,这是最棘手的解析问题,通常通过将初始化更改为以下内容来解决:

vector<int> v((istream_iterator<int>(cin)), istream_iterator<int>());
vector v=vector(istream_迭代器(cin),istream_迭代器());

这比“双括号技巧”更容易理解。

当我试图编译它时,我得到的唯一错误是在下一行,它抱怨
v.begin()
v.end()
无效,因为
v
不是类/结构/联合(显然,正如前面提到的,您遇到了最麻烦的解析)。

当我试图编译它时,我得到的唯一错误是在下一行,它抱怨
v.begin()
v.end()
无效,因为
v
不是类/结构/联合(显而易见的原因是,正如前面提到的,您遇到了最麻烦的解析)。

如果您只需添加一行代码,就可以避免MVP,而且您的代码在我看来更具可读性,并且不那么重复

vector<int> v=vector<int> (istream_iterator<int>(cin), istream_iterator<int>());
i流迭代器b(cin),e;
向量v(b,e);

如果只添加一行代码,就可以避免MVP,而且在我看来,代码的可读性和重复性都会大大提高

vector<int> v=vector<int> (istream_iterator<int>(cin), istream_iterator<int>());
i流迭代器b(cin),e;
向量v(b,e);

这里有一些函数指针声明用作函数参数:

istream_iterator<int> b(cin), e;
vector<int> v(b,e);
那么,看看你的问题:

int f(int (*funa)());
int f(int funa());
int f(int());//The parameter name can be omitted, such as the function declaration int g(double p); is equal to int g(double);
第二种解决方法是:

istream_iterator<int> dataBegin(cin);
istream_iterator<int> dataEnd;
vector<int> v(dataBegin, dataEnd);
向量v((istream_迭代器(cin)),istream_迭代器();
我们在第一个元素周围添加
()
,它告诉编译器它是一个动词,而不是一个参数,因此第二个元素也必须是一个动词。仅此而已。

这里有函数指针声明用作函数参数:

istream_iterator<int> b(cin), e;
vector<int> v(b,e);
那么,看看你的问题:

int f(int (*funa)());
int f(int funa());
int f(int());//The parameter name can be omitted, such as the function declaration int g(double p); is equal to int g(double);
第二种解决方法是:

istream_iterator<int> dataBegin(cin);
istream_iterator<int> dataEnd;
vector<int> v(dataBegin, dataEnd);
向量v((istream_迭代器(cin)),istream_迭代器();
我们在第一个元素周围添加
()
,它告诉编译器它是一个动词,而不是一个参数,所以第二个元素也必须是一个动词。仅此而已。

如果你能告诉我们你得到的实际错误是什么,那就太好了……如果你能告诉我们你得到的实际错误是什么,那就太好了。。。