如果向量(声明为vector<int> vectorX)的大小与预期不同,我使用以下代码抛出错误.
vector<int> vectorX;
int intendedSize = 10;
// Some stuff here
if((int)(vectorX.size()) != (intendedSize)) {
cout << "\n Error! mismatch between vectorX "<<vectorX.size()<<" and intendedSize "<<intendedSize;
exit(1);
}
Run Code Online (Sandbox Code Playgroud)
该cout声明显示两者的大小相同.比较并未表明它们是平等的.
输出是 Error! mismatch between vectorX 10 and intendedSize 10
错误在哪里?早些时候我试过,(unsigned int)(intendedSize)但这也表明他们不平等.
Alb*_*ini 18
我正在写这个答案,因为其他两个,包括被接受的,都是错的.std::vectors 的类型size()不是unsigned int,也不是size_t.
一个大小的类型std::vector<T>是std::vector<T>::size_type.
而已.在某些体系结构和某些编译器上,它可能是相同的size_t,在某些其他体系结构中它可能不是.假设类型的变量size_t可以包含与类型的变量相同的值std::vector<T>::size_type可能会失败.
要检查您的矢量是否具有正确的大小,您可以执行以下操作:
if(vec.size() != static_cast<std::vector<int>::size_type>(expected_size)) {
std::cerr << "Error!" << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
You are missing ) in the right side of if statement
if((int)(vectorX.size()) != (intendedSize)) {
^^^
}
Run Code Online (Sandbox Code Playgroud)
但是请注意,将std :: vector :: size的返回值转换为int是不好的。您将失去大小可能的一半(感谢chris)。
您应该写:
size_t intendedSize = 10;
// OR unsign int intendedSize = 10;
if(vectorX.size() != intendedSize) {
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
27482 次 |
| 最近记录: |