gpt4 book ai didi

C++ 访问类内容器的 begin()/end() 方法

转载 作者:行者123 更新时间:2023-11-30 03:45:37 25 4
gpt4 key购买 nike

<分区>

我想在类中访问 Container 的 begin() 和 end() 方法,而不会导致 const_iterator 到迭代器的转换问题。所以我做了一个 get 方法来返回容器并访问它:

#include <iostream>
#include <vector>

class SpecialList {
public:
std::vector<int> getVett(void) const { return vettore; }

void getFull(void) {
std::vector<int>::iterator it1;

for (size_t i = 0; i < 10; ++i)
vettore.push_back(i);
}

void print(void) {
std::vector<int>::iterator it1;

std::cout << std::endl;

for (it1 = vettore.begin(); it1 != vettore.end(); ++it1)
std::cout << " " << *it1;

std::cout << std::endl;
}

private:
char some_data;
std::vector<int> vettore;
};

int main(void) {
std::cout << "Some output" << std::endl;

SpecialList listspec;
listspec.getFull();
listspec.print();

std::vector<int> pVet = listspec.getVett();

std::cout << "Size = " << pVet.size() << std::endl;
std::cout << "pVet[1] = " << pVet[1] << std::endl;

std::vector<int>::iterator it2;

std::cout << std::endl;

for (it2 = listspec.getVett().begin(); it2 != listspec.getVett().end(); ++it2)
std::cout << " " << *it2;

std::cout << std::endl << "pVet[1] = " << pVet[1] << std::endl;
return 0;
}

该代码从编译器的角度来看是有效的,但它给出了错误的输出:

Some output

0 1 2 3 4 5 6 7 8 9

Size = 10

pVet[1] = 1

0 0 2 3 4 5 6 7 8 9

pVet[1] = 1

为什么它不能正确读取打印 0 而不是 1 的 vector ?这是通过迭代器访问类内容器的好方法吗?

谢谢。

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