我需要同时写一堆文件,所以我决定使用map <string, ofstream>.
map<string, ofstream> MyFileMap;
Run Code Online (Sandbox Code Playgroud)
我拿了一个vector<string> FileInd,包括,说"a" "b" "c",并尝试打开我的文件:
for (vector<string>::iterator it = FileInd.begin(); iter != FileInd.end(); ++it){
...
MyFileMap[*it].open("/myhomefolder/"+(*it)+".");
}
Run Code Online (Sandbox Code Playgroud)
我收到了错误
request for member 'open' in ..... , which is of non-class type 'std::ofstream*'
Run Code Online (Sandbox Code Playgroud)
我试过切换到
map<string, ofstream*> MyFileMap;
Run Code Online (Sandbox Code Playgroud)
但它也没有用.
有人可以帮忙吗?
谢谢.
澄清:
我试过了两个
map<string, ofstream> MyFileMap;
map<string, ofstream*> MyFileMap;
既
.open
->open
4种变体都不起作用.
解决方案(在Rob的代码中建议):
基本上,我忘了"新",以下为我工作:
map<string, ofstream*> MyFileMap;
MyFileMap[*it] = new ofstream("/myhomefolder/"+(*it)+".");
Run Code Online (Sandbox Code Playgroud) 我有点困惑为什么在Python中初始化类的实例时,我不能使用类属性。这是示例:
class TestClass:
... shared_list = ['a', 'b', 'c']
... def __init__(self):
... self.length = len(shared_list)
Run Code Online (Sandbox Code Playgroud)
现在
>>> TestClass.shared_list
['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
因此该列表在类的任何实例出现之前就存在,但是
>>> tc = TestClass()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 4, in __init__
NameError: global name 'shared_list' is not defined
Run Code Online (Sandbox Code Playgroud)
我错过了一些简单的事情吗?
UPD:感谢大家的帮助和及时回复。我已经消除了我的困惑:类在 Python 中没有定义作用域。
我有两个 numpy 数组 a、b 和一个以下形式的字符串s = "1.5 * b if 2*a > 7 else a + b"
我想创建一个数组 c,它将以有效的方式评估数组上的字符串。
期望行为的示例:
a = np.array([1, 4])
b = np.array([3, 1])
s = "1.5 * b if 2*a > 7 else a + b"
print(my_eval(a, b, s))
[4, 1.5]
Run Code Online (Sandbox Code Playgroud)
正在考虑类似的事情
f = np.vectorize(eval(s)); map(a, b, f)
最好的方法是什么?表达式中的数组数量可以更大(但受到合理限制。
我有2个清单:
l1 = [ '09/12/2017', '10/24/2017' ]
l2 = [ '09/15/2017', '10/26/2017', '12/22/2017' ]
Run Code Online (Sandbox Code Playgroud)
对于l1中的每个自动收报机,我想在它之后找到距离l2最近的元素,因此输出应为
l3 = [ '09/15/2017', '10/26/2017' ]
Run Code Online (Sandbox Code Playgroud)
正确的方式似乎是以相反的顺序在两个列表上明确地并行迭代,但我希望有一个更"pythonic"的解决方案..
编辑:我确实想要一个最佳复杂性解决方案,(假设列表已排序),我认为是O(max(len(l1),len(l2))).