gpt4 book ai didi

c++ - 我的 For 循环有什么问题?我收到警告 : comparison between signed and unsigned integer expressions [-Wsign-compare]

转载 作者:可可西里 更新时间:2023-11-01 16:25:35 30 4
gpt4 key购买 nike

#include <iostream>
#include <string>
#include <vector>
#include <sstream>


using namespace std;

int main() {

vector<double> vector_double;
vector<string> vector_string;
...


while (cin >> sample_string)
{
...
}

for(int i = 0; i <= vector_string.size(); i++)
{
....
}

for (int i = 0; i < vector_double.size(); i++)
....


return 0;
}

最佳答案

Why is there a warning with -Wsign-compare ?

正如警告的名称及其文本所暗示的,问题在于您正在比较有符号整数和无符号整数。人们普遍认为这是一次意外。

为了避免这个警告,你只需要确保<的两个操作数(或任何其他比较运算符)要么都是有符号的,要么都是无符号的。

How could I do better ?

for 的惯用方式循环是在第一个语句中同时初始化计数器和限制:

for (std::size_t i = 0, max = vec.size(); i != max; ++i)

这节省了重新计算 size()在每次迭代中。

您也可以(并且可能应该)使用迭代器而不是索引:

for (auto it = vec.begin(), end = vec.end(); it != end; ++it)

auto这是 std::vector<int>::iterator 的简写.迭代器适用于任何类型的容器,而索引将您限制为 C 数组,dequevector .

关于c++ - 我的 For 循环有什么问题?我收到警告 : comparison between signed and unsigned integer expressions [-Wsign-compare],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984955/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com