我有一个几乎相同的功能double和int输入.因此我重载了这两种类型的功能.不幸的是,核心是变体double和int变体之间存在差异.目前,我依赖于一个过载的"核心"功能.为了增强可读性,我希望将重载(非常短)的核心函数作为函数本身的一部分,例如使用lambda函数.
下面的这个例子总结了我当前的布局(当然真正的代码更复杂一些).
#include <iostream>
#include <cstdlib>
double func_core ( double a, double b ) {
return a*b;
}
int func_core ( int a, int b ) {
if ( a==b )
return 1.;
else
return 0.;
}
template <class T> T func ( T a, T b ) {
return func_core(a,b);
}
int main ( void ) {
std::cout << func(10 ,20 ) << std::endl;
std::cout << func(10.,20.) << std::endl; …Run Code Online (Sandbox Code Playgroud) 我正在使用一组类A,B...这些类是独立的,除了它们有一个method共同点.现在我想在向量中组合这些类,以便method在一个循环中调用.似乎最好的解决方案是从类中创建类派生类Parent(见下文).
现在问题如下.我想创建为每个类(一个只有头库a.h,b.h...).在那里,我希望课程完全独立.仅在主模块中,我想将类"附加"到a Parent以便能够将它们组合在一个向量中.我该怎么做呢?或者我是否必须使用void*指针向量?或者是否有另一种方法将这些类组合在一个向量中?
这是我能够组合向量中的类.注意我特别想避免类定义中的父/子范例.但我仍然希望将它们组合在一个向量中.
#include <iostream>
#include <vector>
#include <memory>
class Parent
{
public:
virtual ~Parent(){};
virtual void method(){};
};
class A : public Parent
{
public:
A(){};
~A(){};
void method(){};
};
class B : public Parent
{
public:
B(){};
~B(){};
void method(){};
};
int main()
{
std::vector<std::unique_ptr<Parent>> vec;
vec.push_back(std::unique_ptr<Parent>(new A));
vec.push_back(std::unique_ptr<Parent>(new A));
vec.push_back(std::unique_ptr<Parent>(new B));
for ( auto &i: vec )
i->method(); …Run Code Online (Sandbox Code Playgroud) 我正在通过使用一个plot调用绘制多条曲线来创建一个网格:
import matplotlib.pyplot as plt
import numpy as np
fig, ax = plt.subplots()
x = np.array([[0,1], [0,1], [0,1]])
y = np.array([[0,0], [1,1], [2,2]])
ax.plot([0,1],[0,2], label='foo', color='b')
ax.plot(x.T, y.T, label='bar', color='k')
ax.legend()
plt.show()
Run Code Online (Sandbox Code Playgroud)
生成的图例具有与曲线一样多的“条形”条目(见下文)。我希望每次plot调用只有一个图例条目(在这种情况下只有一次“bar”)。
我想要这样我可以有其他绘图命令(例如绘制'foo'曲线的那个),如果它们有标签,它们的曲线会自动包含在图例中。我特别想避免在构建图例时手动选择句柄,而是使用 matplotlib 的功能通过是/否在绘图时包含标签来处理这个问题。我怎样才能做到这一点?
我正在使用 Python 3.6 和 argparse 1.1。
此外-h/--help我想要一个选项-v/--version打印一个带有版本信息的字符串并退出程序(就像使用帮助字符串一样)。但是,当我也有位置参数时,执行
$ example --version
Run Code Online (Sandbox Code Playgroud)
结果是
usage: example ...
error: too few arguments
Run Code Online (Sandbox Code Playgroud)
我有一个解决方案,我不喜欢它,因为我需要相当多的代码行来做一些 argparse 可以做得更好的事情。
import sys,argparse
class MyParser(argparse.ArgumentParser):
def format_help(self):
return 'Help string\n'
def printversion():
print('0.0.1')
sys.exit(1)
if len(sys.argv)>1:
if len(sys.argv[1])>0:
if sys.argv[1] in ['--version']:
printversion()
parser = MyParser()
parser.add_argument('argument',nargs=1,type=int)
parser.add_argument('-v','--version',action='store_true')
args = vars(parser.parse_args())
if args['version']: printversion()
Run Code Online (Sandbox Code Playgroud) 我想找到两个列表之间的区别.例如:
// two lists:
A = [ 0, 1, 2, 3, 4, 5, 6 ];
B = [ 1, 4, 5 ];
// difference between the lists:
C = [ 0, 2, 3, 6 ];
Run Code Online (Sandbox Code Playgroud)
我使用C++的STL库完成了这个,如下所示:
#include <iostream>
#include <vector>
int main()
{
std::vector<size_t> A = {0, 1, 2, 3, 4, 5, 6};
std::vector<size_t> B = {1, 4, 5};
std::vector<size_t> C;
std::set_difference(A.begin(),A.end(), B.begin(),B.end(), std::inserter(C,C.begin()));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但是,因为我的应用程序主要使用Eigen,所以我现在也想使用Eigen.我无法在文档中或在线找到我想要的内容.
请注意,我特别想避免编写自己的函数.
我目前有一个项目,其中 有一个模板,CMakeLists.txt用于一个可执行文件,一个标头和一个 .cpp文件。我希望它有几个.cpp文件,但仍然要全部编译和构建。我应该如何使CMakeLists.txt文件生成并编译所有.cpp文件,如何检查它是否有效?
如何在列中添加标签作为 numpy 数组的字符串
我需要这个输出
Run Code Online (Sandbox Code Playgroud)One Two Three A 1, 2, 3 B 4, 5, 6
import numpy as np
import pandas as pd
a=pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6])],
orient='index', columns=['one', 'two', 'three'])
print(a)
Run Code Online (Sandbox Code Playgroud)
当我使用这段代码时,代码给了我正确的结果,但也给了我一个错误;我不明白。
注意:我不明白这一行
a=pd.DataFrame.from_items([('A', [1, 2, 3]), ('B', [4, 5, 6])],
orient='index', columns=['one', 'two', 'three'])
Run Code Online (Sandbox Code Playgroud)
我需要另一种方法来实现这一点。
输出:
Run Code Online (Sandbox Code Playgroud)one two three A 1 2 3 B 4 5 6 C:\Users\Toufik\Anaconda3\lib\site-packages\ipykernel_launcher.py:4: FutureWarning: from_items is deprecated. Please use DataFrame.from_dict(dict(items), ...) instead. DataFrame.from_dict(OrderedDict(items)) may be used to preserve the …