![]() |
1
15
一个常见的解决方案是这样做:
另一种方法是尼尔·巴特沃斯建议的。 |
![]() |
2
8
另一种选择是创建一个简单的初始化器类:
注意,由于列表是私有的,这可能需要您将init作为foo的朋友。使这些类包含在它们初始化的类中通常也很方便。 不过,我只是重新阅读了你的问题,然后又有了另一种想法——如果列表是常量,你大概不会改变它,在这种情况下,用字符串按排序顺序初始化的简单字符串数组可能是更好的解决方案。搜索(使用std::binary_search)肯定比搜索列表更快,当然也可以很容易地初始化。 |
![]() |
3
4
如果编译器支持C++ 0x,这实际上是微不足道的。
这对常量和非常量静态成员都有效。我用clang-4.2、gcc-4.7、gcc-4.6和gcc-4.5测试了这段代码。GCC-4.5不支持更新的 对于 语法,所以您必须使用传统的 对于 带迭代器的循环。另外,别忘了通过 - STD= C++0X 指向编译器的标志。我相当有信心Visual Studio也支持这一点,但我不确定,也不知道哪个版本。 |
![]() |
4
1
这取决于您需要将哪些值放入该列表中。它们是静态的还是需要某种形式的计算? 如果它们是静态的,可以这样做:
|
![]() |
5
0
一个可能的解决方案是使用一个访问器方法来检查它是否被初始化,如果没有初始化的话就这样做。 |
![]() |
6
0
我(问题的作者)试图这样做的方式是徒劳的。 我试着做类似smth的事情(在foo.cpp中):
但这会产生一个编译器错误。 然后我想创建一个initialize()方法并从代码中直接调用它。
//错误:编译器认为它是方法的重新定义,而不是调用。 唯一可行的想法是(还没有尝试)检查使用它的每个方法中的列表是否为空,如果是这样,请调用initialize()。但那太难看了! |
|
Julia · 矢量中相加为总和S的值的数量 2 年前 |
![]() |
C_Rod · 在模板方法中确定STL容器中项目的数据类型 2 年前 |
![]() |
quantumwell · 将空向量放入std::map() 7 年前 |
![]() |
OutOfBound · 对未初始化内存使用算法的优点 7 年前 |
![]() |
DarthRubik · 在使用列表删除之后,迭代器如何不无效 7 年前 |