我想在我的代码中消除警告,我正在寻找关于这两个问题的答案:
1. warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for( auto i = 0; i < w.size(); i++ ) {
和
2. warning: conversion to ‘std::vector<int>::size_type {aka long unsigned int}’ from ‘int’ may change the sign of the result [-Wsign-conversion]
for ( int count = 0; count < w[i]; count++ )
源代码如下。使用一些随机数返回一个int的向量。
for( auto i = 0; i < w.size(); i++ ) {
std::vector<int> random(std::vector<int>& w){
std::vector<int> v;
v.clear();
std::random_device device;
std::mt19937 generator(device());
for( auto i = 0; i < w.size(); i++ ) {
for ( int count = 0; count < w[i]; count++ )
v.push_back(i);
}
std::shuffle(v.begin(), v.end(), generator);
return v;
}
最佳解决方案?
答案 0 :(得分:1)
修复第一个警告:
for( std::vector<int>::size_type i = 0; i < w.size(); i++ ) {
修复第二个警告:
for ( std::vector<int>::size_type count = 0; count < w[i]; count++ )
击> <击> 撞击>
为了减少打字:
using index_t = std::vector<int>::size_type;
更新:ha-ha(doh!),我对第二次警告的错误。它是由于使用i而不是按计数类型引起的。