简单的CArray问题

Tal*_*ode 2 c++ windows mfc

1.)有什么区别

CArray <SomeClass> collection;
Run Code Online (Sandbox Code Playgroud)

CArray <SomeClass,SomeClass> collection;
Run Code Online (Sandbox Code Playgroud)

甚至

CArray <SomeClass* ,SomeClass* > collection;
Run Code Online (Sandbox Code Playgroud)

2.)在阅读Stackoverflow上的一些评论时,我发现了一条说"不要使用CArray"的说明.为什么不使用CArray?

Jam*_*lis 7

这个:

CArray <SomeClass> collection;
Run Code Online (Sandbox Code Playgroud)

相当于:

CArray <SomeClass, const SomeClass&> collection;
Run Code Online (Sandbox Code Playgroud)

第二个模板参数用于指定访问成员的类型.模板参数在MSDN上的文档中描述.

这个:

CArray <SomeClass* ,SomeClass* > collection;
Run Code Online (Sandbox Code Playgroud)

存储指向类型对象的指针集合SomeClass,而另外两个存储类型对象的集合SomeClass.

至于为什么你"不应该使用它" std::vector,它是C++语言标准的一部分,因而便携,对于大多数项目来说可能是更好的选择.如果你有使用的遗留代码CArray,那么你可能需要使用它,并且没有任何问题.