在给定的数组中,我需要找到数组中最小值的索引,但前提是它是负数.
例如:[1, 2, 3, 4]
将不返回任何索引
并[1, 4, -7, -2]
会回来3
我在想这个find()
命令一定很简单,但我无法弄清楚如何在这种情况下使用它.
在Common Lisp中,是否有一个谓词来测试给定字符是否是字符串的一部分?或者更一般地说,如果元素是向量的成员?
就像是:
(char-in #\o "foo")
Run Code Online (Sandbox Code Playgroud)
我能够实现它
(defun char-in (c s)
(member c (coerce s 'list)))
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
情况如下:
我有一个由以下文件定义的类.
Foo.h文件:
template<typename MyType>
class Foo
{
public:
Foo(int number = 50);
private:
typedef enum {VAR1, VAR2} Type;
class Bar
{
MyType a;
Type b;
Bar(int param1, Type param2) : a(param1), b(param2) {}
}
std::vector<Bar> vec;
};
Run Code Online (Sandbox Code Playgroud)
Foo.cpp文件:
template<typename MyType>
Foo::Foo(int number) : vec(number)
{ }
Run Code Online (Sandbox Code Playgroud)
问题是当我编译它时,我在.cpp文件的第一行收到错误,说它需要一个没有参数的Bar的构造函数.我想它需要它在Foo中创建矢量.我为Bar添加了一个没有参数的构造函数,给出了以下.h文件:
template<typename MyType>
class Foo
{
public:
Foo(int number = 50);
private:
typedef enum {VAR1, VAR2} Type;
class Bar
{
MyType a;
Type b;
Bar() {} // <---- Line added
Bar(int param1, Type …
Run Code Online (Sandbox Code Playgroud) 来自 R5RS 标准:
Values might be defined as follows:
(define (values . things)
(call-with-current-continuation
(lambda (cont) (apply cont things))))
Run Code Online (Sandbox Code Playgroud)
我对此的第一个解释是像这样的表达式(+ (values 1 2))
等价于(apply + '(1 2))
并且会产生结果3
。但是,根据我的测试,这种解释是不正确的。这是我对上面代码的解释:values
是一个带有任意数量参数的函数,捆绑到一个名为things
. 然后,values
使用things
“未捆绑”列表调用当前的延续(使用的地方)。
我错过了什么?上面的示例(+ (values 1 2))
根据我使用的解释器给出了错误或 1。
我有一些列表需要迭代,有时从头到尾,有时从头到尾。此列表从未修改过,我将对其进行多次遍历。当我要从头到尾进行迭代时,我想避免在O(n)中反转列表的操作。
是否有某种允许的数据结构?
我以为C#中的(双重)LinkedList实现允许这种行为很简单(通过保留列表开头的内部引用),但是我不认为它是通过这种方式实现的。如果我错了,可以提供一个链接吗?
假设我有两个文件:stack.h和queue.h.两者都想实现add()函数.例如,如果我在同一个main.c中包含stack.h和queue.h,则会发生冲突.
在两个文件中实现add()函数的推荐方法是什么?