我的矢量实现中的错误
Bug at my vector implementation
我正在实现一个向量(使用分配器类)。
explicit vector() : Capacity(0), Size(0) // first constructor
{
buffer = Free = End;
}
explicit vector(size_t sz, const T& initial = T()) // second constructor
{
Capacity = sz;
Size = sz;
buffer = alloc.allocate(sz);
for(size_t i = 0; i < sz; i++)
{
alloc.construct(buffer+i, initial);
}
}
template<typename Iterator>
vector(Iterator beg, Iterator lst) // third constructor
{
std::ptrdiff_t sz(lst - beg);
buffer = alloc.allocate(sz);
Iterator index(beg);
for(size_t i = 0; i < sz; i++)
{
alloc.construct(buffer+i, *index++);
}
Size = sz;
Capacity = sz;
}
vector(const vector<T> &rhs)
{
*this = vector<T>(rhs.begin(), rhs.end());
}
/* .... */
int main()
{
vector<int> vec1(10, 5);
vector<int> vec2(vec1.begin(), vec1.end());
/* .... */
}
以下是我定义的构造函数。当我使用第三个构造函数时,我收到错误消息:
test.cpp:11:41: error: invalid conversion from ‘vector<int>::iterator {aka int*}’ to ‘long unsigned int’ [-fpermissive]
我得出的结论是,编译器将第二个构造函数与第三个构造函数混淆了,因为它们都有两个参数。我能做什么?
标准向量通过在自身内部有一个特殊的iterator
类来解决它,并将其用作参数。这意味着,虽然参数数量相同,但参数的类型会有所不同。
相关文章:
- 在c++中实现LinkedList时,应出现未处理的错误
- 尝试使用继承和模板实现CRTP.Visual Studio正在生成编译器错误
- 在 c++ 中实现 Trie 时出现分段错误
- C++ 实现模板单例类时出现链接错误
- 内存错误低于在C++年实现埃拉托色尼筛分时的预期
- C++数组队列实现方法错误
- 实现 DFS 在较短的输入下工作正常,但在较大的输入下会抛出分段错误
- 分段 排序函数实现中的错误
- 尝试从头开始实现Leetcode的FizzBuzz多线程问题。收到"libc++abi.dylib: terminating"错误
- 使用 std::forward_list 返回错误的队列实现
- 在我的trie实现中出现分段错误
- 在 c++ 中实现链表时出现分段错误
- 比较迭代器会使程序崩溃,而不会在自定义气泡排序实现中出现错误
- 如何知道C2259 VS 2017错误未实现哪种方法?
- 筛子的埃拉托色尼错误实现
- BAD_ALLOC错误实现向量调整大小函数时
- 头文件中包含.cpp重新定义错误-实现通用堆栈
- 程序没有给出期望的输出.FIFO的错误实现
- 这是卡达内算法的错误实现吗?
- 双链表错误实现Deque