std :: vector数组的大小

时间:2016-05-06 10:54:18

标签: c++ vector size

我想查看size()数组中rowsstd::vector()的数量。

我有像

这样的矢量
std::vector<int> vec[3];

vec.size()不适用于上述矢量声明。

4 个答案:

答案 0 :(得分:8)

至于为什么vec.size()不起作用,因为vec不是矢量,它是数组(矢量), C ++中的数组不是对象(在OOP意义上它们不是类的实例),因此没有成员函数。

如果您想在执行3时获得结果vec.size(),那么您必须使用例如std::array<std::vector<int>, 3> vec; std::cout << "vec.size() = " << vec.size() << '\n'; // Will output 3 std::array

std::array

或者,如果您没有std::vector<std::vector<int>> vec(3); std::cout << "vec.size() = " << vec.size() << '\n'; // Will output 3 ,则使用向量向量并通过调用正确的constructor来设置大小:

getTabIndex: function(tab) {
    var index = 0;

    tab.up('#mainTabPanel').getItems().each(function(item) {
        if (tab === item) {
            return false;
        }

        if (item.tab) {
            index++;
        }
    });

    return index;
}

答案 1 :(得分:2)

std::vector<int> vec[3];中没有固有的东西来说明第一个或第二个索引操作构成的位置&#34;行&#34; vs.&#34; columns&#34; - 作为一名程序员,这完全取决于你自己的观点。也就是说,如果您认为这有3行,您可以使用...

检索该数字
 std::extent<decltype(vec)>::value

...您需要#include <type_traits>。请参阅here

无论如何,std::array<>专门用于提供更好,更一致的界面 - 并且已经熟悉std::vector

std::array<std::vector<int>, 3> vec;
...use vec.size()...

(如果您希望模板化代码同时处理向量和数组,则一致性尤为重要。)

答案 2 :(得分:1)

尝试

int Nrows = 3;
int Ncols = 4
std::vector<std::vector<int>> vec(Nrows);
for(int k=0;k<Nrows;k++)
   vec[k].resize(Ncols);

...

auto Nrows = vec.size();
auto Ncols = (Nrows > 0 ? vec[0].size() : 0);

答案 3 :(得分:0)

使用sizeof(vec[0])/sizeof(vec)sizeof(vec)/sizeof(vector<int>)