理论是这样的:我有一个半径为R的圆C和中心S.在这个圆里面,我想放置N(一个"大"数)点,使得点P附近V点的密度相等所有点都在圈子里到处都是.当N变为无穷大并且附近变为P时,极坐标和笛卡尔坐标中的密度函数变为常数.
那么,如果我想用恒定密度的N点填充圆圈,我应该如何处理呢?
我正在查看一些已被移植并且无法编译的代码.代码以类似"C"的方式编写,并传递函数指针以便在对象上设置特定的mutator.正在填充的对象声明如下:
class Person
{
std::string n_;
int a_;
public:
void name( const std::string& n ) { n_ = n; }
std::string name() const { return n_; }
void age( const int& a ) { a_ = a; }
int age() const { return a_; }
};
Run Code Online (Sandbox Code Playgroud)
相当标准的东西.然后我们有一些有趣的功能,我为了简洁而修剪了它们:
typedef void (Person::FnSetStr)(const std::string& s);
typedef void (Person::FnSetInt)(const int& i);
void setMem( const std::string& label, Person* person, FnSetStr fn)
{
// Do some stuff to identify a std::string within a message from the …Run Code Online (Sandbox Code Playgroud) 摘要
由于某种原因,调用lambda函数的成员函数模板无法使用错误C2275进行编译...非法使用此类型作为表达式,但是当函数移出为自由函数时,它会正确编译.
细节
首先,我有一个基类,将function实例保存在一个vector.只有派生类可以通过调用向其添加function实例.可以通过调用公开调用所有实例.派生类将lambdas添加为实例.那些lambdas将依次用另一个"内部"lambda 调用基类函数模板.模板参数to 是一个异常类型,在执行"内部"lambda时将被显式捕获:vectoradd_externalfunctioninvoke_externalsfunctioninvoke_internalinvoke_internalinvoke_internal
using namespace std;
class base
{
public:
void invoke_externals()
{
for (auto it = funcs_.begin(); it != funcs_.end(); ++it)
{
(*it)();
}
}
protected:
void add_external(function<void(void)> func)
{
funcs_.push_back(func);
}
template <typename T>
void invoke_internal(function<void(void)> func)
{
try
{
func();
}
catch (const T&){}
catch (...){}
}
vector<function<void(void)>> funcs_;
};
Run Code Online (Sandbox Code Playgroud)
然后我有两个琐碎的自由函数抛出logic_error和runtime_error异常.这些函数将在以下调用的"内部"lambda中使用invoke_internal …
我非常注重C++思维,需要一些特定C#问题的指导.我们假设我们有以下类:
public class Foo
{
private IList<Bar> _bars = new List<Bar>(); // Note IList<> vs List<>.
public IList<Bar> Bars
{
get { return _bars; }
set
{
...
}
}
}
Run Code Online (Sandbox Code Playgroud)
现在,取而代之的是...,我倾向于清理_bars和论证中AddRange的项目,而不是仅仅分配给.我看到它,方式是,我想保持引用同一个项目,该项目的引用,而不是实际的是引用.setvaluevalue_barsvalueIList<Bar>value
那个错误的想法在我身边吗?你觉得怎么样?
编辑:经过一些评论后,我意识到我必须补充一点,我希望能够在Foo ctor中使用现有的Bars集合并从该集合中初始化_bars.所以,到目前为止,通过该修订和评论,这感觉更好:
public class Foo
{
private readonly List<Bar> _bars = new List<Bar>();
public Foo(IEnumerable<Bar> bars)
{
_bars.AddRange(bars);
}
public IList<Bar> Bars
{
get { return _bars; }
}
}
Run Code Online (Sandbox Code Playgroud)
好点吗?
我通常会创建一个基类abstract来发出信号,这是一个基类 - 你无法实例化我!即使其中没有抽象方法.
此外,我总是使基类构造函数受到保护,虽然没有真正的功能需要这样做 - 我只想提出另一个观点,即这是一个基类 - 你无法实例化我!
这样做我是否会跳过篮球?你是做什么?
考虑以下代码:
void foo(size_t value)
{
if (value > 0) { ... } // A
if (value <= 0) { ... } // B
}
Run Code Online (Sandbox Code Playgroud)
由于无符号不能为负,符合C++编译器的标准是否可以优化B语句?或者它只是选择比较0?
让我们暂时搁置海森堡.
在我自己的流程中,我将如何监控此流程使用的内存量?
(我可能故意低估了这个问题,梦想有创造性的答案......)
请注意,标题并不能完全反映出我需要做的事情,但因为我的英语并不完美,所以找不到正确的单词.如果有人想要纠正它,请随意.
给定一个包含组的字符串(由n个点分隔)我想得到所有值:group [0]; 组[0].集团[1]; 组[0].集团[1] ..组[N].
示例:输入:Tr.WH.Eu6.ISC将给出:
现在我有这个代码:
string input = "Tr.WH.Eu6.ISC";
string[] splitStrings = input.Split('.');
List<string> subs = new List<string> { "" };
for (int i = 0; i < splitStrings.Count(); i++)
{
subs.Add(subs.Last() + "." + splitStrings[i]);
}
subs.Remove("");
Run Code Online (Sandbox Code Playgroud)
我发现它很难看并且输出不完全正常:
我怎样才能使它工作(最好用Linq)?
我正在调查具有Windows CE和Mobile"共享"功能的智能指针,其中VS 2008 tr1 std::shared_ptr无法使用(由于与CE上没有的v.9 dll的链接,显然,如果我理解正确的话).
有一篇半旧的MSDN杂志文章,其中包含来自Microsoftie(Eric Niebler)的消息:使用我们的自定义C++类实现更可靠的资源管理.
他的推理,设计和实现shared_any看起来很稳固,但我想知道是否有人在任何平台(不一定是WinCe/WM)上实际测试过该批次?
我有一个可移植的库,如果在Visual Studio下编译或只使用Microsoft的C/C++编译器,在一个地方需要做X,否则需要Y. 我#define应该寻找什么?