到目前为止,我总是使用迭代器遍历STL映射中的所有键,如下所示:
for (std::map<char,int>::iterator it=mymap.begin(); it!=mymap.end(); ++it){
std::cout << it->first << " => " << it->second << '\n';
}
Run Code Online (Sandbox Code Playgroud)
最近虽然我遇到了一些使用不同样式来迭代键的代码,如下所示.此功能是否仅在最近修订后的标准中添加?与许多其他语言已经提供的一样,这似乎是一种使用较少代码完成更多工作的相当有趣的方式.
for (auto& x: mymap) {
std::cout << x.first << " => " << x.second << '\n';
}
Run Code Online (Sandbox Code Playgroud)
此外,我很想知道在这里使用关键字"auto"的确切含义.
我试图在Python中实现一个算法来生成列表的所有排列.但我在我的for循环中我希望保持原始前缀和休息列表完整,因此我试图使用newprefix和newrest创建这些列表的副本,但是在每次迭代打印变量rest时,我看到即使是变量休息正在修改!如何在Python中创建列表的浅表副本?或者我的逻辑是否存在另一个问题?
def perm(prefix, rest):
if len(rest) == 0:
print prefix
for i in range(len(rest)):
#prints in the for loop are just for debugging
print "rest:", rest
print "i=", i
newprefix = prefix
newprefix.append(rest[i])
newrest = rest
newrest.pop(i)
print "old pre : ", prefix
print "newpre=", newprefix
print "newrest=", newrest
perm(newprefix, newrest)
perm([], ['a','b','c'])
Run Code Online (Sandbox Code Playgroud) 虽然ec2-import-instance工具支持vmdk磁盘格式,但每次我尝试在vmdk文件上运行该命令时,都会收到以下错误:
ERROR: File uses unsupported compression algorithm 0
Run Code Online (Sandbox Code Playgroud)
我按以下格式调用该工具:
ec2-import-instance -f vmdk -o <ACCESS KEY> -w <SECRET KEY> <VMDK file>
Run Code Online (Sandbox Code Playgroud)
我正在使用ec2工具版本1.6.6.1.
在我的代码中,上述两个选项中的任何一个都可以同样有效,但我有兴趣找出两种方法的优缺点.
如何在将子进程发送到主进程之前访问它们的stdout?我正在使用multiprocessing.Pool模块来生成子进程池.
我在Python中有一个类函数,它返回成功或失败,但如果发生故障,我希望它返回一个特定的错误字符串.我有三种方法:
将变量error_msg传递给最初设置为None的函数,如果出现错误,则将其设置为错误字符串.例如:
if !(foo(self, input, error_msg)):
print "no error"
else:
print error_msg
Run Code Online (Sandbox Code Playgroud)从函数返回包含bool和error_msg的元组.
我在出现错误时引发异常并在调用代码中捕获它.但是由于我没有看到我正在使用的代码库中经常使用异常,所以不太确定采用这种方法.
Pythonic的做法是什么?
我试图使用Python从电子邮件字符串中提取域名.对于诸如abc@xyz.com之类的基本情况,以下情况很有效:
string.split("@")[1].rstrip(".com") #would give me "xyz"
Run Code Online (Sandbox Code Playgroud)
但我希望找到一个解决方案来获取以下案例的域名:
我想到的一个解决方案是使用正则表达式并删除最后一个点后面的任何内容,但仍留下特殊域名,例如"xyz.co.sy",其中我希望得到的只是"xyz".
在作为函数的字符串输入给出的一个变量中求解线性方程的最有效算法是什么?例如,对于输入字符串:
"x + 9 - 2 - 4 + x = - x + 5 - 1 + 3 - x"
输出应为1.
当我在字符串中遇到空格时,我正在考虑使用堆栈并将每个字符串标记推到它上面.如果输入是波兰表示法,那么从堆栈中弹出数字以获得结果会更容易,但我不确定采取何种方法.
这是一个面试问题.
python ×6
c++ ×2
python-2.7 ×2
python-3.x ×2
algorithm ×1
amazon-ec2 ×1
c++11 ×1
map ×1
regex ×1
stl ×1