c++的vector<int>使用length函数计算元素个数有什么问题?给出例子解释length函数的使用
时间: 2023-05-31 07:03:51 浏览: 170
在C++中,vector容器使用的是size()函数来计算元素个数,而不是length()函数。使用length()函数会导致编译错误。
例如:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr{1, 2, 3, 4, 5};
cout << arr.length() << endl; //编译错误,vector没有length()函数
return 0;
}
```
输出:
```
error: no member named 'length' in 'std::__1::vector<int, std::__1::allocator<int> >'
```
正确的做法是使用size()函数:
```c++
#include <iostream>
#include <vector>
using namespace std;
int main() {
vector<int> arr{1, 2, 3, 4, 5};
cout << arr.size() << endl; //输出5
return 0;
}
```
输出:
```
5
```
相关问题
#include <iostream>#include <vector>#include <algorithm>using namespace std;int countGoodRectangles(vector<vector<int>>& rectangles) { int maxLen = 0, count = 0; for (vector<int>& rectangle : rectangles) { int len = min(rectangle[0], rectangle[1]); if (len > maxLen) { maxLen = len; count = 1; } else if (len == maxLen) { count++; } } return count;}int main() { vector<vector<int>> rectangles = {{5,8},{3,9},{5,12},{16,5}}; int count = countGoodRectangles(rectangles); cout << "Number of rectangles that can be cut into squares with maximum length: " << count << endl; return 0;}该代码如何改成自己输入二维数组内容
你可以通过以下方式修改代码,使其可以接受用户输入的二维数组内容:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int countGoodRectangles(vector<vector<int>>& rectangles) {
int maxLen = 0, count = 0;
for (vector<int>& rectangle : rectangles) {
int len = min(rectangle[0], rectangle[1]);
if (len > maxLen) {
maxLen = len;
count = 1;
} else if (len == maxLen) {
count++;
}
}
return count;
}
int main() {
int rows, cols;
cout << "Enter number of rows: ";
cin >> rows;
cout << "Enter number of columns: ";
cin >> cols;
vector<vector<int>> rectangles(rows, vector<int>(cols));
cout << "Enter elements of the array:" << endl;
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
cin >> rectangles[i][j];
}
}
int count = countGoodRectangles(rectangles);
cout << "Number of rectangles that can be cut into squares with maximum length: " << count << endl;
return 0;
}
```
这段代码通过 `cin` 函数接受用户输入的行数和列数,然后创建一个大小为 `rows x cols` 的二维向量 `rectangles`。接下来,程序提示用户输入二维数组的元素,并依次读入。最后,程序调用 `countGoodRectangles` 函数计算结果,然后输出。
Test类里面有两个函数,void test(std::vector<int>& infos) { boost::bind(&Test::test1, this, infos); } void test1(std::vector<int>& infos) { infos.push_back(1); }上述代码我在test里面打印infos的长度是多少
在 `test` 函数中,使用 `boost::bind` 绑定了 `test1` 函数,并将 `this` 和 `infos` 作为参数传递给了 `test1` 函数。但是,由于 `boost::bind` 返回的是绑定的函数对象,而没有调用该函数对象,所以 `infos` 的长度仍然是 0。
如果想要在 `test` 函数中调用 `test1` 函数,并输出 `infos` 的长度,可以使用 `boost::bind` 绑定的返回值,如下所示:
```c++
void test(std::vector<int>& infos) {
boost::bind(&Test::test1, this, boost::ref(infos))();
std::cout << "infos length: " << infos.size() << std::endl;
}
```
其中,`boost::ref(infos)` 将 `infos` 作为引用传递给 `test1` 函数,`()` 表示调用绑定的函数。调用完 `test1` 函数后,输出 `infos` 的长度即可。
阅读全文