我是第一个C++类的编程学生,最近我们被鼓励编写一个简单的递归函数来查找给定字符串中第一次出现的子字符串.如果找到,则返回索引.如果未找到子字符串,则该index_of()函数应返回-1.我们鼓励使用一个辅助函数,它将索引作为其参数之一,这就是我尝试过的.
例如:
int index_of("Mississippi", "sip"); // this would return a 6
Run Code Online (Sandbox Code Playgroud)
这应该是一个简单的练习,以帮助我们理解递归,并且不会被提交.我的教授说我们实际的递归赋值将更加复杂,这就是为什么我真的想要理解递归的简单用法.
我已经使用C风格的字符串和指针成功完成了这项工作,但没有使用C++ std :: string对象.我的节目中我做错了什么?我的教授表示我们应该能够在5分钟内轻松写出来,但我已经苦苦挣扎了两个小时.这是我到目前为止所做的:
int index_of(string s, string t)
{
int index = 0;
if (s[index] == NULL)
return -1;
else if (starts_with(s, t, ++index))
{
return index;
}
else
return index;
}
bool starts_with(string s, string t, int index)
{
if (t[index] == NULL)
return true;
if ( s[index] == NULL || t[0] != s[index])
return false;
return starts_with(s, t, ++index);
}
Run Code Online (Sandbox Code Playgroud)
如上所述,此函数始终返回index1.
当连接对象被不同线程使用时,cx_Oracle 游标的行为是什么?生成器将如何影响这种行为?具体来说...
编辑:原来的示例函数不正确;生成器由子函数返回,yield未直接在循环中使用。这澄清finally了何时执行(在return执行之后),但仍然没有回答如果另一个线程开始使用创建游标的连接对象,是否可以使用游标。它实际上似乎(至少在 python 2.4 中)try...finally会yield导致语法错误。
def Get()
conn = pool.get()
try:
cursor = conn.cursor()
cursor.execute("select * from table ...")
return IterRows(cursor)
finally:
pool.put(conn)
def IterRows(cursor):
for r in cursor:
yield r
Run Code Online (Sandbox Code Playgroud)
Get()是一个被多个线程调用的函数。连接是通过threaded=False参数创建的。
我在想...
cursor如果线程 2 出现并使用相同的连接对象,线程 1 的对象是否仍然可用?如果没有,可能会发生什么?我看到的行为是 cx_Oracle 中谈论协议错误的异常,然后出现段错误。
给出ASP.NET中的以下简化代码块
<% foreach( item in Model) { %>
<%=item.OriginalText.OriginalText1 %>
<%} %>
Run Code Online (Sandbox Code Playgroud)
OriginalText是一个可能为null的类.我正在寻找一种简单(干净)的方法来检查此null并返回一个空字符串("").
我的configuration.ac文件中的以下代码不起作用(请注意嵌套方括号[default = no]):
AC_ARG_ENABLE(debug,
[ --enable-debug build with debugging support [default=no].],
[DEBUG="$enableval"],
[DEBUG="no"]
)
Run Code Online (Sandbox Code Playgroud)
我怎么能逃脱这些括号?
array和arraycollection有什么区别?
我是MySQL的新手,对我来说很明显的一点是,每页创建几个数据库查询相对于其中一些数据库查询要容易得多....但我真的不知道有多少数据库查询查询可能太多,或者在什么时候我应该投入更多宝贵的时间来组合查询,花时间找出聪明的联接等等.
因此,我想知道是否有某种"心理基准"经验丰富的人在这里使用每页查询的数量,如果有,有多少可能是太多?
我理解在任何上下文中的正确答案都与满足应用程序功能需求所需的内容有关.但是,对于客户要求可能灵活或未正确设置的项目,或者您作为开发人员完全控制的项目(例如您自己开发的站点),您可以在功能和性能之间进行协商......基本上,如果编码要求影响性能并且您无法进一步优化它,那么只需切割琐碎的功能.
对此我表示感谢.
谢谢
我正在使用一个站点,该站点将从许多不同的源中提取源,然后将这些流保存到一个通用模型中,在这种情况下是一个特征.FeedEntry类中的代码示例可能是:
feed = Feedzirra::Feed.fetch_and_parse(feed_url)
add_entries(feed.entries)
...
def self.add_entries(entries)
entries.each do |entry|
# Should know how to parse itself into a trait
@trait = parse(entry)
if @trait.save
...
end
end
Run Code Online (Sandbox Code Playgroud)
不可否认,我来自java背景,在java中,我会建立一个继承heirarchy,然后在FeedEntry的每个子类上扩展parse方法,以便每个FeedEntry都知道如何解析自己.所以我的问题:
1)这是一个可行的铁路计划吗?
2)如果是这样,是否只包含一个基本上是"类型"的列,表示FeedEntry的子类是什么?
3)如果没有,有关DRYest方法的任何建议吗?
谢谢!
rss inheritance design-patterns ruby-on-rails factory-pattern
使用HttpClient时,尝试通过HTTPS进行通信时收到以下错误:
线程"main"中的异常javax.net.ssl.SSLPeerUnverifiedException:peer未经过身份验证.
这是我的代码:
URI loginUri = new URI("https://myUrl.asp");
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet( loginUri );
HttpResponse response = httpclient.execute( httpget );
Run Code Online (Sandbox Code Playgroud)
如何抑制或删除此错误?
我们总是看到(二元搜索)树上的操作具有O(logn)最差情况下的运行时间,因为树高是logn.我想知道我们是否被告知算法的运行时间是logn的函数,例如m + nlogn,我们可以得出结论它必须涉及(增强的)树吗?
编辑:感谢您的评论,我现在意识到分治和二叉树在视觉/概念上是如此相似.我从来没有在两者之间建立联系.但我想到一个案例,其中O(logn)不是一个分治算法,它涉及一棵没有BST/AVL /红黑树属性的树.
这是具有查找/联合操作的不相交的集合数据结构,其运行时间为O(N + MlogN),其中N是元素的数量,M是查找操作的数量.
如果我错过了,请告诉我,但我看不出分治在这里如何发挥作用.我只是在这个(不相交的集合)情况下看到它有一个没有BST属性的树,而运行时间是logN的函数.所以我的问题是为什么/为什么我不能从这个案例中进行推广.