0
が、私は私のコードで警告を解消したい警告を排除し、私はそれらの2についての答えを探しています:「ベクトル::はstdするintへ<int> :: size_type変換」
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;
}
最適解?
using index_t = std::vector<int>::size_type;
:
for (std::vector<int>::size_type count = 0; count < w[i]; count++)
が少しタイピングことを確認するには、次の
for(std::vector<int>::size_type i = 0; i < w.size(); i++) {
2つ目の警告を修正するには:
関連性:[この回答とそのコメント](https://stackoverflow.com/a/34888054/253056) –
このコードで2番目の警告メッセージがどのように生成されるかわかりません。その行には 'size_type'はありません。これは正確にあなたが持っているメッセージですか、それとも編集しましたか? – interjay
編集がありません。逐語コピー – cateof