静态向量的大小
size of a static vector
>我在成员函数中使用静态向量并将值推回该向量;但是对于三个函数调用,向量的大小仅为 1。
我不确定如何为此制作 MVCE,因为在 MVCE 中它对我来说也很好用,所以问题显然是代码的其他部分。我只是想知道或知道在什么情况下我的静态向量会给我这样的结果。
class X
{
//...
};
template <typename T>
void test(T a)
{
std::cout<<"Function called n";
static std::vector<X> vec;
std::lock_guard<std::mutex> lock(mx);
//Doing something else with T
X obj;
vec.push_back(obj);
std::cout<<"no of elements in vec is "<<vec.size()<<"n";
}
即将出现的输出是
Function called
no of elements in vec is 1
Function called
no of elements in vec is 1
Function called
no of elements in vec is 1
成员函数从 CPPREST http_client请求调用调用。
请注意,不同类型的模板实例化无关紧要。这意味着如果您使用不同类型的 T
调用test()
三次,则将实例化三个不相关的test()
,其中包含 3 个不同的vec
实例。这就是为什么你会得到它们的大小都是1
的结果。
您的请求调用可能与此类似 整数 i = 1; 浮点数 f = 2.5; 字符 c = 'A'; 测试(i); 测试(f); 测试(c);
如果添加 测试(i);
那么 test(int) 的 vec.size() 将为 2而 test(float) 和 test(char) 的 vec.size() 将保持 1。
您可以在此处阅读有关模板中静态变量行为的更多信息 http://www.geeksforgeeks.org/templates-and-static-variables-in-c/
相关文章:
- C++从另一个类访问公共静态向量的正确方法是什么
- 如何从静态向量访问类元素?
- 如何将对象添加到类中的静态向量
- 使用 C++98 标准填充二维静态向量
- C++ 入门 12.1:我可以在类中使用静态向量成员实现 StrBlob<string> 吗?
- DLL – 在 DLL 初始化时填充的静态向量,向客户端程序返回零大小
- 如何通过参考传递向量的静态向量
- 无法在 c++ 中初始化静态向量
- C++类中的静态向量
- 静态常量 std::<char>没有堆的向量初始化?
- 静态"global"向量似乎未填充
- C++将局部变量添加到静态向量而不复制
- 当push_back到向量中时,我是否需要复制构造函数来修改静态成员
- 包含多态对象的向量:静态断言误差
- 必须调用对非静态成员函数的引用(向量)
- 如何在C 中创建指向向量的静态指针
- 动态增长的向量,在 cpp 中声明为静态
- 大小在运行时确定的静态数组的向量
- 在迭代向量的 for 循环中无效使用非静态数据成员
- C :如何在类内声明一个空的私人静态向量