私はちょうどC++をダウンさせようとしています。私は自分自身のライブラリとそれ以外のものを作る必要があります。だから、JDKのListクラスとまったく同じ、自分自身のListテンプレートクラスの初めを取得しようとしています。だから私はテンプレートを取得して、私はちょうど私がリストオブジェクトの内容をループすることができるようにする方法を知りたいです。この方法で、私は上記のオブジェクトの内容を印刷することができます。私はどこから始めるべきか正確には分かりません。C++のカスタムリストをループする方法
#pragma once
template<typename T> class List {
public:
List() : _size(0), _elements(nullptr) {}
~List() {
if (_elements != nullptr) {
delete[] _elements;
}
}
inline int size() { return _size; }
inline void add(T element) {
_size++;
T* buffer = new T[_size];
if (_elements != nullptr) {
memcpy(buffer, _elements, sizeof(T) * (_size - 1));
delete[] _elements;
}
buffer[_size - 1] = element;
_elements = buffer;
}
inline void remove(T element) {
_size--;
T* buffer = new T[_size];
if (_elements != nullptr) {
memcpy(buffer, _elements, sizeof(T) * _size);
delete[] _elements;
}
else {
assert(false);
}
_elements = buffer;
}
inline T* getElements() {
return _elements;
}
private:
int _size;
T* _elements;
};
そして、これはループのために、私はそれは、Javaのように拡張forループであることに慣れている
#include <cstdio>
#include <string>
#include "List.h"
using namespace std;
int main(int argc, char ** argv)
{
string str = "This is a test!";
List<char> list = breakString(str);
for (char c : list.getElements()) {
}
getchar();
return 0;
}
List<char> breakString(string str) {
List<char> list;
for (char c : str) {
list.add(c);
}
return list;
}
だから私は何を把握しようとしているが、その中で私のメインのCPPファイルです、それはここでC++と同じですか?もしそうなら、私はどのようにしてこのオブジェクトを反復可能にしますか?
私が直接尋ねた場合、私は私の質問にもっと正確な答えを得ると思った。 range_expressionが始まるという名前のメンバーを持つクラス型Cの発現がある場合Range-based for
を検証するため
可能な重複[「ループの範囲ベース」で動作するように私のカスタム型を作成する方法?](ht tps://stackoverflow.com/questions/8164567/how-to-make-my-custom-type-to-work-with-range-based-for-loops) – Azeem