我有以下课程:
class MyVector{
public:
MyVector(int num);
virtual ~MyVector();
int my_size();
private:
vector<int> some_vector;
};
Run Code Online (Sandbox Code Playgroud)
构造函数和大小函数如下所示:
MyVector::MyVector(int num) {
vector <int> some_vector(num);
}
int MyVector::my_size() {
return this->some_vector.size();
Run Code Online (Sandbox Code Playgroud)
但是,在运行这些行时:
MyVector *Bul = new MyVector(5);
cout << Bul->my_size() << endl;
Run Code Online (Sandbox Code Playgroud)
输出为 0。谁能解释为什么会这样?
我试图自己为 my_vec 编写一个迭代器:
#define BEGIN true
#define END false
#include <vector>
#include <iostream>
template<typename Container>
class my_vec {
private:
class iterator {
const my_vec *this_vec;
using iterator_type = typename std::vector<std::pair<int, const Container&>>::const_iterator;
iterator_type itr;
public:
iterator(const my_vec &s, bool state) :
this_vec(&s) {
if (state == BEGIN) {
itr = s.v.begin();
} else { /*(state==END)*/
itr = s.v.end();
}
}
iterator& operator++() {
itr++;
return *this;
}
std::pair<int, const Container&> operator*() const {
return std::make_pair(1, this_vec->dog);
}
bool operator!=(iterator other) …Run Code Online (Sandbox Code Playgroud)