我正在编写一个库函数,我真的需要能够将vectors
&之类的参数传递maps
给它。
我知道你不能在库的头文件中声明一个带有 STL 参数的函数
std::map<int> FixMap( const std::map<int> & );
由于二进制兼容性问题,除非库和可执行文件是使用相同的编译器和设置编译的。
另一方面,使用Qt 模板库进行以下工作
QMap<int> FixMap( const QMap<int> & );
即使他们提供的 DLL 可能是由与我不同的编译器编译的。
Qt使用什么技术来QMap
克服这个兼容性问题? QValueList
QString
我已经阅读了他们的代码,但我无法隔离该技术。
问题 1:有人可以向我解释(可能通过简短的演练吗?)如何编写应用他们技术的代码?
我知道的唯一可行的技术是提供string
/map
作为不透明的指针,或使用pImpl成语。
问题 2:我可以使用 STLPort 代替“本机”STL 标头来实现这种调用吗?这对 STL 的性能有何影响?