向量。如何设置最大元素数并找到当前计数?

Sin*_*nba 3 c++

我想创建一个最大元素数为48的向量,并且我想随时知道向量中元素的当前数。

我使用以下代码:

。H

std::vector< CPPobject* >vec; 
Run Code Online (Sandbox Code Playgroud)

。毫米

int maxCountElementInVec = 48; 
vec.resize( maxCountElementInVec );
int countElement  = sizeof( vec ) / sizeof( vec[0] );

printf("%d ",countElement); // return 3
Run Code Online (Sandbox Code Playgroud)

<...>

vec.push_back( some_cpp_obj );
int countElement  = sizeof( vec ) / sizeof( vec[0] );
if( countElement > maxCountElementInVec ) printf("Evrika"); 
printf("%d ",countElement); // return 3
Run Code Online (Sandbox Code Playgroud)

CountElement始终为3

Kit*_*sto 5

您不能设置最大元素数。

但是长度是用

int length = myVector.size();
Run Code Online (Sandbox Code Playgroud)


Luc*_*ore 5

使用该.size()方法可以实现查找元素的数量。

要设置限制,您可以创建一个包装器std::vector

template<typename T>
class MyVector : public std::vector<T>
{
    int _maxSize;
public:
    void setMaxSize(int maxSize) {_maxSize = maxSize;}
    void push_back(const T& element)
    {
        if (std::vector<T>::size() < _maxSize)
           std::vector<T>::push_back(element);
        else
        {
           //disallow - throw exception or whatever
        }
    }
};
Run Code Online (Sandbox Code Playgroud)