gpt4 book ai didi

c++ - 使用用户定义的类和 int 创建 vector 在 ‘struct std::_Vector_base....no type named ‘value_type’ 中的 ‘class MyClass’ 的实例化

转载 作者:行者123 更新时间:2023-12-01 22:58:45 24 4
gpt4 key购买 nike

我正在创建一个简单的类

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

class MyClass {
int p;

public:
MyClass( int q ) { p = q; }
};

但是当我尝试创建这个 vector 时

 vector<int, MyClass> vec1(1);

我的代码中断并抛出这个异常

vector<int,MyClass> vec1(1);

In instantiation of ‘struct std::_Vector_base<int, MyClass>’:
/usr/include/c++/9/bits/stl_vector.h:386:11: required from ‘class std::vector<int, MyClass>’
vector_class.cpp:19:26: required from here
/usr/include/c++/9/bits/stl_vector.h:84:21: error: no type named ‘value_type’ in ‘class MyClass’
84 | rebind<_Tp>::other _Tp_alloc_type;

我可以解决这个问题吗?我可以像这样在 vector 中使用 int 类型和用户定义的类型吗 vector<int,MyClass>

最佳答案

vector有两个模板参数。

  • 第一个是要存储到 vector 中的元素类型。
  • 第二个是分配器,它是一个辅助类,用于分配和释放 vector 使用的内存。

您正在尝试创建一个使用 MyClass 的 vector 作为分配器。然而,MyClass不提供 vector 的电话期望,所以编译失败。

你想完成什么?

如果你想要一个包含 MyClass 对象的 vector , 那么你应该声明一个 vector<MyClass> .如果你想要一个包含对象对的 vector ,一个 int 和一个 MyClass那么你可以使用 vector<pair<int, MyClass> (正如其他评论者所提到的)。

但是从你的问题中并不清楚你真正想要的是什么。

关于c++ - 使用用户定义的类和 int 创建 vector 在 ‘struct std::_Vector_base....no type named ‘value_type’ 中的 ‘class MyClass’ 的实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72420933/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com