假设我有一个存储前10个素数的数组,如下所示:
const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
Run Code Online (Sandbox Code Playgroud)
只要我有1个.cpp文件,这一切都非常简单和简单.但是,如果我有多个.cpp文件,我真的不知道在哪里放这个数组.
一个明显的解决方案是:
// primes.h:
extern const int primes[10];
// primes.cpp:
extern const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
Run Code Online (Sandbox Code Playgroud)
但是,问题是primes数组不再是编译时常量.假设x.cpp想要进行一些涉及素数[k]的繁重计算,使用ka编译时间常数,它必须进行实际的内存查找.我不喜欢那样.
那么我在哪里放置这个数组:
这个怎么样?
inline int prime(int i) {
static const int primes[] = {2, 3, 5, 7, 11, 13, 17, 19, 23, 29};
return primes[i];
}
Run Code Online (Sandbox Code Playgroud)
PS:即使上面的"明显的解决方案"花了我相当长的时间来写.显然const变量默认有内部链接,所以我不得不在primes.cpp文件中添加"extern"以使其工作.
我试图基于一个整数数组创建一个简单的 LookUpTable,其思路是在编译时计算它.
试图使它可以用于我可能拥有的各种整数类型的任何其他未来表,我需要它作为模板.
所以我有一个LookUpTable.h
#ifndef LOOKUPTABLE_H
#define LOOKUPTABLE_H
#include <stdexcept> // out_of_range
template <typename T, std::size_t NUMBER_OF_ELEMENTS>
class LookUpTableIndexed
{
private:
//constexpr static std::size_t NUMBER_OF_ELEMENTS = N;
// LookUpTable
T m_lut[ NUMBER_OF_ELEMENTS ] {}; // ESSENTIAL T Default Constructor for COMPILE-TIME INTERPRETER!
public:
// Construct and Populate the LookUpTable such that;
// INDICES of values are MAPPED to the DATA values stored
constexpr LookUpTableIndexed() : m_lut {}
{
//ctor
}
// Returns the …Run Code Online (Sandbox Code Playgroud) 优化我们正在开发的游戏,我们正在进入每个CPU周期都很重要的阶段.我们使用弧度来计算围绕其他对象旋转的对象的位置,我想在查找表中减少不必要的精度.为此,我们大量使用预定义的Pi.这个Pi有多准确?
所以,我的问题是:
我正在尝试在我的乳胶项目中获得一个自动生成的符号列表.这是我到目前为止的宏...
\newcommand{\addsymbol}[3]{%
\symboldisplay{#1}{#2}\\%
\setelem{#3}{#1}
}
\newcommand{\symboldisplay}[2]{%
$#1$ \parbox{5in}{\dotfill #2}%
}
\def\setelem#1{\expandafter\def\csname myarray(#1)\endcsname}
\def\dispsymbol#1{\csname myarray(#1)\endcsname}
Run Code Online (Sandbox Code Playgroud)
然后我包括我的符号列表
\begin{listofsymbols}
\input{symbols}
\end{listofsymbols}
Run Code Online (Sandbox Code Playgroud)
symbols.tex文件的位置
\addsymbol{n}{Number of sample points}{num_points}
\addsymbol{f_s}{Sampling frequency}{samp_frequency}
Run Code Online (Sandbox Code Playgroud)
然后我可以通过标签来获取我的符号:\ dispsymbol {num_points} - 在这种情况下显示n.
当我在同一章(符号列表章节)中调用\ dispsymbol作为\ addsymbol def时,这可以找到并且花花公子... 当我试图在另一章中获得符号的标签时似乎没有任何效果.
任何人都可以帮助我,或建议一个能满足我需求的套餐吗?
我正在使用Orable数据库,我正在添加几个查找表.
一般的问题是查找表是否应包含代码和描述,代码是FK返回主表,还是查找表只包含描述,而FK是否应该返回主表.
我在争论代码/描述对.我觉得,如果我有type = Contractor和code = CN一个存储过程应该说where type='CN',而不是只具有type=Contractor无代码和存储过程中这样说:where type='Contractor'因为如果我要显示什么:General Contractor给用户,而不是Contractor.然后我必须改变存储过程.我觉得我不应该这样做.(更改存储过程需要在dev中重新编译,迁移到测试,由客户端重新测试,以及迁移需要经历涉及两周等待期的变更控制过程的prod;而修改表中的记录则不需要任何这个的)
我的数据建模者只想使用描述.他的主要论点是,它需要一个无关紧要的联盟.
应该采用哪种方式?如果应该完成代码/描述方式,我该如何说服数据建模者?
谢谢!
type_cd type_dsc
CN Contractor
IN Inspector
Run Code Online (Sandbox Code Playgroud) 在我正在编写的C++ CPU绑定模拟中,我在程序中通过valgrind追踪了一个瓶颈cmath::exp.它目前占我模拟时间的40%以上.我可以将输入绑定到一个相对较小的域,但我想控制准确性.我正在考虑转移到LUT(查找表)来替换,exp但我不太确定如何以"正确的方式"(tm)执行此操作.我有些担忧:
实现/(从库中包含)LUT的最佳方法是什么exp?
我正在设计一组数学函数,并在CPU和GPU(带有CUDA)版本中实现它们.
其中一些功能基于查找表.大多数表占用4KB,其中一些表更多.基于查找表的函数接受输入,选择查找表的一个或两个条目,然后通过内插或应用类似技术来计算结果.
我现在的问题是:我应该在哪里保存这些查找表?CUDA设备有许多用于存储值的地方(全局存储器,常量存储器,纹理存储器......).假设每个表可以被许多线程同时读取,并且输入值以及查找索引在每个warp的线程之间可以完全不相关(导致不相关的内存访问),哪个内存提供最快的访问?
我补充说,这些表的内容是预先计算的并且完全不变.
编辑
只是为了澄清:我需要存储大约10个不同的4KB查找表.无论如何,如果对于例如100个4KB表或例如10个16KB查找表的情况,对于这种情况的解决方案将是相同的将是很好的.
我有一个有两列的表,比如A:B.我在列A中有一个单独的列表(在D列中).对于列D中的每个目标值,我想在col A与目标匹配的所有行中找到B列中的最小值和最大值.例如,如果数据如图所示,
col A col B col D
1 7.5 1.00 7.5 1.00 1.20
2 7.5 1.04 8 1.08 1.45
3 7.5 1.08 8.5 1.17 1.83
4 7.5 1.15
5 7.5 1.20
6 8 1.08
7 8 1.13
8 8 1.20
9 8 1.29
10 8 1.38
11 8 1.43
12 8 1.45
13 8.5 1.17
14 8.5 1.22
15 8.5 1.26
16 8.5 1.35
17 8.5 1.42
18 8.5 1.51
19 8.5 1.58
20 8.5 1.64
21 8.5 1.69 …Run Code Online (Sandbox Code Playgroud) 我有一个管理对象如集合类List<Car>和List<Bike>它们属性附加伤害.
我想找到一种方法来在查找中获取每个集合的引用,这样我就可以实现诸如Add<Car>(myCar)或Add(myCar)(带反射)之类的方法,并将它添加到正确的集合中.
我试过以下,
public class ListManager
{
private Dictionary<Type, Func<IEnumerable<object>>> _lookup
= new Dictionary<Type, Func<IEnumerable<object>>>();
public ListManager()
{
this._lookup.Add(typeof(Car), () => { return this.Cars.Cast<object>().ToList(); });
this._lookup.Add(typeof(Bike), () => { return this.Bikes.Cast<object>().ToList(); });
}
public List<Car> Cars { get; set; }
public List<Bike> Bikes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但是.ToList()创建一个新列表而不是引用,因此_lookup[typeof(Car)]().Add(myCar)只会添加到字典列表中.
lookup-tables ×10
c++ ×3
c ×1
c# ×1
c++14 ×1
constexpr ×1
cuda ×1
database ×1
excel ×1
javascript ×1
latex ×1
macros ×1
optimization ×1
oracle ×1
profiling ×1
sql ×1
trigonometry ×1