计算机科学:程序抽象

学习计算机科学的概念,示例问题和解释

大学导师应用商店 大学导师安卓商店

例子问题

例子问题1:实现技术

给定一个名为“intVec”的整型向量,编写一个“rangedfor”循环,有时也称为“for each”循环,将vector中所有元素的f值翻倍。(c++)

可能的答案:

for(int& i: intVec(){

I * 2;

for(int& i: intVec(){

I * = 2;

for(int i: intVec(){

I * = 2;

For (int I = 0;i < intVec.size();+ + i) {

intVec[i] *= 2;

For (int I = 0;i < intVec.size();+ + i) {

[i] * 2;

正确答案:

for(int& i: intVec(){

I * = 2;

解释

c++ 11引入了“for each”循环,允许用户在不编写传统循环的情况下对容器中的项进行循环。让我们来看看所有的选项。

for(int i: intVec(){

I * = 2;

虽然这看起来像正确答案,但它不是。for循环第一部分中的int i是“按值”传入的,这意味着将生成intVec的副本,副本中的整数将翻倍。原始intVec向量中的整数将不受影响。为了解决这个问题,需要将int i通过引用传递到for循环中,这是通过在“int”后面添加“&”符号来完成的。

正确的循环是:

for(int& i: intVec(){

I * = 2;

让我们来看看其他的选择:

for(int& i: intVec(){

I = 2;

这个将不起作用,因为它将intVec中的所有项设置为2,而不是将它们加倍。

所有其他for循环都不是“for each”循环,因此即使它们完成了相同的输出,它们也是不正确的。

大学导师的学习工具