Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
循环的范围和语法 我正在通过Stroustrup的C++编程原理书,我已经谈到了循环的范围。这里给出的代码是给出的直接例子,但是我希望有人能对循环中实际发生的事情有所了解。_C++_Loops_For Loop_Vector - Fatal编程技术网

循环的范围和语法 我正在通过Stroustrup的C++编程原理书,我已经谈到了循环的范围。这里给出的代码是给出的直接例子,但是我希望有人能对循环中实际发生的事情有所了解。

循环的范围和语法 我正在通过Stroustrup的C++编程原理书,我已经谈到了循环的范围。这里给出的代码是给出的直接例子,但是我希望有人能对循环中实际发生的事情有所了解。,c++,loops,for-loop,vector,C++,Loops,For Loop,Vector,int main() { vector<double> temps; // temperatures for (double temp; cin>>temp; ) // read into temp temps.push_back(temp); // put temp into vector // compute mean temperature: double sum = 0; for (int x :

int main()
{
    vector<double> temps; // temperatures
    for (double temp; cin>>temp; ) // read into temp
        temps.push_back(temp); // put temp into vector    

    // compute mean temperature:
    double sum = 0;
    for (int x : temps) 
        sum += x;
    cout << "Average temperature: " << sum/temps.size() << '\n';

    // compute median temperature:
    sort(temps); // sort temperatures
    cout << "Median temperature: " << temps[temps.size()/2] << '\n';

}
intmain()
{
向量temps;//温度
对于(双温);cin>>temp;)//读入温度
temps.push_back(temp);//将temp放入向量
//计算平均温度:
双和=0;
用于(整数x:temps)
总和+=x;
cout
for(int x:temps)
表示向量
temps
中的每个元素,让我们将其命名为
x
,并使用
x
for(int x:temps)
表示向量
temps
中的每个元素,让我们将其命名为
x
,并使用
x

执行一些操作,您可以按如下方式读取
(int x:temps
)“对于
temps
中的每个元素
x
。换句话说,
x
的值是从
temps
的元素分配的,循环在
向量上迭代时,一次分配一个

还请注意,
intx
应该是
double x
,因为
temps
的元素是
double
s。

您可以按如下方式读取
(intx:temps
)“对于
temps
中的每个元素
x
。换句话说,
x
的值是从
temps
的元素分配的,循环在
向量上迭代时,一次分配一个


还要注意,
intx
应该是
double x
,因为
temps
的元素是
double
s。

通常,循环
for(声明:range)
的范围相当于

for (auto it = begin(range); it != end(range); ++it)
{ 
    declaration = *it;
    // do something
}
(代码简化了,实际上有)

因此,如果将循环变量声明为
intx
,并在
向量上迭代,则除了得到类型转换
double->int
,所有操作都有效:

int x = *it; // 'it' references a 'double'

综上所述,这似乎是本书中的一个错误。您希望
for(double x:temp)
正确计算所有内容。

通常,循环
for(声明:range)
的范围相当于

for (auto it = begin(range); it != end(range); ++it)
{ 
    declaration = *it;
    // do something
}
(代码简化了,实际上有)

因此,如果将循环变量声明为
intx
,并在
向量上迭代,则除了得到类型转换
double->int
,所有操作都有效:

int x = *it; // 'it' references a 'double'
综上所述,这似乎是本书中的一个输入错误。您希望
for(double x:temps)
正确计算所有内容。

在a中,
int x
是一个范围声明,
temps
是一个范围表达式(在本例中由容器/向量表示)。这意味着变量
x
将同时获取存储在
temps
向量中的每个值。此外
x
应为
double
类型,而不是
int
,因为
temps
是一个双向量:

for (double x : temps) {
        sum += x;
}
或者使用
auto
说明符,让编译器推断出
x
的适当类型:

for (auto x : temps) {
        sum += x;
}
如果要修改循环内
x
的值,请使用参考类型:

for (auto& x : temps) {
        sum += x;
}

对于第一个语句,
double temp;
是init语句,
cin>>temp;
是一个条件。循环将继续执行
temps.push_back(temp);
语句,直到在键盘上按Ctrl+D时条件变为
false

请注意,这种使用for循环的方式可能会有些混乱。

在a中,
int x
是一个范围声明,
temps
是一个范围表达式(在本例中由容器/向量表示)。这意味着变量
x
将同时获取存储在
temps
向量中的每个值。此外
x
应为
double
类型,而不是
int
,因为
temps
是一个双向量:

for (double x : temps) {
        sum += x;
}
或者使用
auto
说明符,让编译器推断出
x
的适当类型:

for (auto x : temps) {
        sum += x;
}
如果要修改循环内
x
的值,请使用参考类型:

for (auto& x : temps) {
        sum += x;
}

对于第一个语句,
double temp;
是init语句,
cin>>temp;
是一个条件。循环将继续执行
temps.push_back(temp);
语句,直到在键盘上按Ctrl+D时条件变为
false


请注意,这种使用for循环的方法可能会有点混淆。

它应该是双精度的;这一定是一个可能导致截断的错误。变量应该只是在向量上迭代。它应该是双精度的;这一定是一个可能导致截断的错误。变量应该只是在向量上迭代呃向量。