Как правильно определить целочисленный вектор, содержащий научные обозначения в C++?
Код
#include <iostream>
#include <vector>
int main () { std::vector<int> N = {3e6, 4e6}; }
Выдает ошибку
error: narrowing conversion of ‘3.0e+6’ from ‘double’ to ‘int’ inside { } [-Wnarrowing]|||.
В то время как
#include <iostream>
#include <vector>
int main () {
std::vector<int> N = {3*10^6, 4*10^6};
for (int n: N ){ std::cout << n << std::endl; }
}
печать
24
46.
Как правильно определить этот вектор как целочисленный вектор?
Если нашли при написании этого вопроса этот параметр
int n1 = 3e6, n2 = 4e6;
vector<int> N = {n1, n2};
работает, но есть ли лучший способ? Тип по-прежнему преобразуется из double в int в объявлениях n1 и n2.
1 ответ
Если вы настаиваете на использовании этой записи, вы можете выполнить явное приведение, чтобы выключить компилятор, но это не очень хорошая идея:
#include <iostream>
#include <vector>
int main () { std::vector<int> N = {int(3e6), int(4e6)}; }