0

I'm trying to create a list class in C++ similar to the lists in Java. Is there a way I can have it be able to list whatever object it wants to? The class resizes arrays to create the list, but what I need to do is find out the kind of object that's needed to store.

Monet R. Adams
  • 115
  • 3
  • 8
  • 9
    [C++ templates](http://www.cplusplus.com/doc/tutorial/templates/)? – tangrs Jul 12 '13 at 02:02
  • 3
    Templates can certainly do the job (though comparing templates to Java generics is a bit like comparing a Formula 1 race car to a child's pedal car with a number painted on the side). – Jerry Coffin Jul 12 '13 at 02:05
  • 2
    [not writing templates in c++ is like watching porn without mastrubating.](http://chat.stackoverflow.com/transcript/10?m=10483030#10483030), felt this quote was relevant. – Rapptz Jul 12 '13 at 02:05
  • 1
    Standard template library or templates, depends on your need (I can't really see it from the question). – darxsys Jul 12 '13 at 02:05
  • Isn't the generic feature in Java learned from C++ template? – Yu Hao Jul 12 '13 at 02:06
  • @YuHao: I think both came from Ada generics; Java's generics seem a lot closer to Ada 83 generics than to C++ templates. – Jerry Coffin Jul 12 '13 at 02:08
  • 2
    [Templates vs. generics](http://en.wikipedia.org/wiki/Comparison_of_Java_and_C%2B%2B#Templates_vs._generics) – Yu Hao Jul 12 '13 at 02:10
  • @YuHao I liked "Templates are Turing-complete" from that link. – brian beuning Jul 12 '13 at 03:02
  • I want to point out that C++'s "generics" are among the best. You can do a whole lot more than what you're asking here. – chris Jul 12 '13 at 03:19
  • They are completely different things, despite the syntax. C++ templates create new type;, generate new code; and don't really fit properly into the type system. Java Generics constrain existing types; don't generate any code at all; and are *part of* the type system. You cannot compare them in any meaningful way. – user207421 Jul 14 '13 at 00:46

2 Answers2

8

Yes, C++ has templates that can be used to create generic containers roughly similar to Java generic containers.

While your immediate reaction might be to assume that std::list is similar to a Java list, that would be a mistake. In Java, a list basically just means a sequence. In C++, a std::list is a linked list (which is rarely useful). Most of the time you want to use an std::vector (which is more like Java's ArrayList).

Jerry Coffin
  • 476,176
  • 80
  • 629
  • 1,111
2

Yes, there is, and it's called Templates

Renato Lochetti
  • 4,558
  • 3
  • 32
  • 49