将无符号整数(使用 .size())分配给一维浮点向量

Assigning unsinged int (with .size()) to 1D float vector

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

当我将 unsigned int(带 .size())分配给一维浮点向量时,它应该会给我一个错误,对吗?该练习使用此代码及其 运行 很好。我想知道我想了解什么。

// 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;
}

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