相关疑难解决方法(0)

对std :: vector的迭代:unsigned vs signed index变量

在C++中迭代向量的正确方法是什么?

考虑这两个代码片段,这个工作正常:

for (unsigned i=0; i < polygon.size(); i++) {
    sum += polygon[i];
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (int i=0; i < polygon.size(); i++) {
    sum += polygon[i];
}
Run Code Online (Sandbox Code Playgroud)

产生warning: comparison between signed and unsigned integer expressions.

我是C++世界的新手,所以unsigned变量对我来说有点可怕,我知道unsigned如果使用不正确,变量会很危险,所以 - 这是正确的吗?

c++ unsigned signed stl

452
推荐指数
10
解决办法
75万
查看次数

为什么使用迭代器而不是数组索引?

请使用以下两行代码:

for (int i = 0; i < some_vector.size(); i++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

还有这个:

for (some_iterator = some_vector.begin(); some_iterator != some_vector.end();
    some_iterator++)
{
    //do stuff
}
Run Code Online (Sandbox Code Playgroud)

我被告知第二种方式是首选.这究竟是为什么?

c++ iterator stl

227
推荐指数
13
解决办法
7万
查看次数

基于范围的普通数组的工作原理如何?

在C++ 11中,您可以使用基于范围的语言for,它可以充当foreach其他语言.它甚至适用于普通的C数组:

int numbers[] = { 1, 2, 3, 4, 5 };
for (int& n : numbers) {
    n *= 2;
}
Run Code Online (Sandbox Code Playgroud)

怎么知道什么时候停止?它是否仅适用于已在相同范围内声明的静态数组for?你会如何for在动态数组中使用它?

c++ arrays foreach c++11

76
推荐指数
3
解决办法
5万
查看次数

使用OpenMP和C++ 11基于范围的for循环?

这样做是否有任何反指示?或者是否明确规定了行为?

#pragma omp parallel for
for(auto x : stl_container)
{
   ...
}
Run Code Online (Sandbox Code Playgroud)

因为看起来OpenMP规范只对c ++ 98有效,但我想由于C++ 11线程可能存在更多的不兼容性,这里没有使用它们.我还是想确定一下.

openmp c++11

62
推荐指数
2
解决办法
1万
查看次数

标签 统计

c++ ×3

c++11 ×2

stl ×2

arrays ×1

foreach ×1

iterator ×1

openmp ×1

signed ×1

unsigned ×1