我想创建一个最大元素数为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
使用该.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)