我在C++中做了一些编码工作,我做的很多事情都涉及到分析数据集。我经常需要从STL容器中选择一些元素,并且非常频繁地编写如下代码:
using std::vector;
vector< int > numbers;
for ( int i = -10; i <= 10; ++i ) {
numbers.push_back( i );
}
vector< int > positive_numbers;
for ( vector< int >::const_iterator it = numbers.begin(), end = numbers.
我在Knuth的“计算机编程艺术”( the Art of Computer Programming)的评论中读到了以下内容:
“非常的‘实用性’意味着准CS专业的学生必须学习Kernighan在设计C时的错误,特别是一个for循环反复评估for条件这一臭名昭著的事实,这重复了大多数实现for循环的语言的行为,但却无法与之匹配。”
()
这家伙在说什么?你怎么能实现一个for循环,而这个循环不只是一个while循环的语法糖呢?
在C编程语言中,我经常做以下事情:
while ((c = getch()) != EOF) {
/* do something with c */
}
在Python中,我没有发现任何类似的东西,因为我不允许在求值表达式中设置变量。我通常以两次设置求值表达式而告终!
c = sys.stdin.read(1)
while not (c == EOF):
# Do something with c
c = sys.stdin.read(1)
在我试图找到一种更好的方法的过程中,我发现了一种只需要设置和计算表达式一次的方法,但这变得越来越丑陋……
while True:
c = sys.
在Python中,如果我们需要从列表中找到最大的元素。我们使用:
>>>max(listname) to get the maximum number from the list.
Time Complexity : O(1)
如果我们使用C/C++,
we need to iterate over the loop and get the max.
Time Complexity: O(n) or O(n square)
因此,时间复杂度会随编程语言而变化吗?
使用无限循环进行网络连接是否被认为是一种好的编程实践?
示例:
//connect to server
conn = getConnection()
while True:
data = conn.getData()
//do something
我想以一种高效的方式来实现这一点,比如注册一个事件并使程序休眠。我正在寻找一种类似于在Linux中处理信号的实现。
我的目标语言是C、Python和Java。