C++ 将非单精度int(带.size())赋值给1D浮点向量

C++ 将非单精度int(带.size())赋值给1D浮点向量,c++,vector,stdvector,unsigned-integer,size-type,C++,Vector,Stdvector,Unsigned Integer,Size Type,我是一个完全的编程新手,我的问题对你来说可能是微不足道的。我尝试了很多,但就是不明白为什么这个程序没有给我一个错误。这段代码是我一直在做的一个练习的一部分。这里的部分代码是将vectorvec1中的行数分配给变量rows 当我将一个无符号int(带有.size())分配给1D浮点向量时,它应该会给我一个错误,对吗?本练习使用此代码,并且运行良好。我想知道我错过了什么去理解 // Example program #include <iostream> #include <vect

我是一个完全的编程新手,我的问题对你来说可能是微不足道的。我尝试了很多,但就是不明白为什么这个程序没有给我一个错误。这段代码是我一直在做的一个练习的一部分。这里的部分代码是将vector
vec1
中的行数分配给变量
rows

当我将一个
无符号int
(带有
.size()
)分配给1D浮点向量时,它应该会给我一个错误,对吗?本练习使用此代码,并且运行良好。我想知道我错过了什么去理解

// Example program
#include <iostream>
#include <vector>

int main()
{
  //declaring a float 1D vector
  std::vector<float> vec1(4,0); 
  //declaring new variable 'row' - Type float - 1D vector
  std::vector<float>::size_type rows;
  
  rows = vec1.size(); // this should give me error because i am assigning a unsigned int(with .size()) to row - 'float 1d vector'.
  
  std::cout<<rows<<std::endl;
}
//示例程序
#包括
#包括
int main()
{
//声明浮点1D向量
std::vec1(4,0);
//声明新变量“row”-类型float-1D vector
std::vector::size\u类型行;
rows=vec1.size();//这应该会给我带来错误,因为我正在将一个无符号int(with.size())赋值给行-“float 1d vector”。

std::cout
std::vector::size_type
是存储容器大小的变量的类型。您需要的是
std::vector::value_type
。即使这样,它也会编译,因为
无符号int
可以分配给
float

std::vector::size_type
不是向量,而是t
std::vector::size
returns我明白了,这很有道理。感谢@kriz的出色解释!因此,我在某个地方找到了这个解释,“将行声明为适合容纳向量系统所能容纳的最大可能大小的变量”,这样说对吗?是的,这句话描述了这行代码的功能:
std::vector::size\u type rows;