我想对一个包含双精度和矢量混合的矢量求和。
#ifndef MAIN_SAVITCH_STACK4_H
#define MAIN_SAVITCH_STACK4_H
#include <cstdlib> // Provides NULL and size_t
#include "node2.h" // Node template class from Figure 6.5 on page 308
namespace main_savitch_6B //7B
{
template <class Item>
class stack
{
public:
// TYPEDEFS
typedef std::size_t size_type;
typedef Item value_type;
// CONSTRUCTORS and DESTRUCTOR
stack( ) { top_ptr = NULL; }
stack(const stack& source);
~stack( ) { list_clear(top_ptr); }
// MODIFICATION MEMBER FUNCTIONS
void push(const Item& entry);
void pop( );
void operator =(const stack& source);
Item& top( );
void swap(stack& y);
// CONSTANT MEMBER FUNCTIONS
size_type size( ) const
{ return main_savitch_6B::list_length(top_ptr); }
bool empty( ) const { return (top_ptr == NULL); }
const Item& top( ) const;
private:
main_savitch_6B::node<Item> *top_ptr; // Points to top of stack
};
}
#include "stack4.template" // Include the implementation
#endif
我想总结一下,使我得到类似的东西
[[1 2 1 [1 2 3]] [1 2 4 [1 1 1]]...]
有没有一种有效的方法来使用诸如reduce或map这样的核心clojure函数?
答案 0 :(得分:0)
我认为,您想拥有一个添加嵌套矢量结构的函数,以便(nvadd [1 2 1 [1 2 3]] [1 2 4 [1 1 1]])
的值为[2 4 5 [2 3 4]]
。然后,您可以使用该函数reduce
来使用此类矢量。
(defn nvadd [a b]
(mapv #(if (vector? %1)
(nvadd %1 %2)
(+ %1 %2))
a b))
这假设输入格式正确。