Vscode移植到VS2010遇到的问题C++

如果在vscode能运行,就是C++版本的问题,VS2010仅支持部分C++11及以上的功能,仍然有一小部分不支持,但是他的警告信息和错误信息又很不明显,所以花了很多时间纠错。

总结:

看这三种for循环

 for (const Product& product : products) {
        if (product.type == TYPE_A) {
            sumA += product.price;
            countA += 1.0;
        } else if (product.type == TYPE_B) {
            sumB += product.price;
            countB += 1.0;
        }
    }

这段代码使用了 C++11 引入的范围-based for 循环,也称为 foreach 循环。在这个循环中,我们不需要通过迭代器或者索引来遍历容器,而是直接使用类似于数组的方式来遍历容器中的元素。这种语法使得代码更加简洁易读。在vs2010中会报错。

for (vector::const_iterator it = products.begin(); it != products.end(); ++it) {
    const Product& product = *it;
    if (product.type == TYPE_A) {
        sumA += product.price;
        countA += 1.0;
    } else if (product.type == TYPE_B) {
        sumB += product.price;
        countB += 1.0;
    }
}

这段代码使用了一个 vector::const_iterator 类型的迭代器 it 来遍历 products 容器。通过 it-> 访问迭代器指向的对象 ,在vs2010也会报错。

for (int i = 0; i < products.size(); ++i) {
    const Product& product = products[i];
    if (product.type == TYPE_A) {
        sumA += product.price;
        countA += 1.0;
    } else if (product.type == TYPE_B) {
        sumB += product.price;
        countB += 1.0;
    }
}

这种是最普通的 for 循环和索引 i 来遍历 products 容器。在循环体内,我们通过索引 i 访问容器中的元素,所以在vs2010适用。

你可能感兴趣的:(c++,开发语言,visualstudio,vscode)