小编Ale*_*x B的帖子

C++:使用两个内部类型的运算符作为函数对象

我有一个类似于矢量的类,它包含一个类型的对象数组"T",我想实现4个算术运算符,它们将对每个项应用操作:

// Constructors and other functions are omitted for brevity.
template<class T, unsigned int D>
class Vector {

public:
    // Add a value to each item: naive implementation.
    void operator += (const T&) {
        for (int i = 0; i < D; ++i) {
            data[i] += value;
        }
    }
    void operator -= (const T&) { ... }
    void operator *= (const T&) { ... }
    void operator /= (const T&) { ... }

private:
    T items[D];
};
Run Code Online (Sandbox Code Playgroud)

因为运算符将包含相同的样板代码(遍历每个元素并应用适当的操作),我想我可以概括它: …

c++ templates functional-programming

5
推荐指数
1
解决办法
1094
查看次数

如何从sqlite中的多个表中删除数据?

我正在使用sqlite数据库来存储数据.我有三个表:Invoice,InvRow,Invdetails.

表之间的关系是:

Invoice.Id = InvRow.InvId
InvRow.Id = Invdetails.RowId 
Run Code Online (Sandbox Code Playgroud)

我需要使用单个查询从三个表中删除相关条目.我怎样才能做到这一点?有帮助吗?

sqlite

5
推荐指数
2
解决办法
1万
查看次数

使用boost :: accumulators对值之间的增量进行采样

我有一个包含N个样本的数据集(比如说,13,16,17,20),其中每个下一个样本都会增加一些值(在这种情况下为3,1,3),我想找到第二个序列的各种统计数据.

样本是以递增方式收集的时间戳(即并非所有样本都可以一次获得),因此我想使用boost::accumulators::accumulator_set它看起来像适合账单的东西.

我希望能够做到这样的事情:

accumulator_set< double, features< tag::mean > > acc;
...
acc(13);
acc(16);
acc(17);
acc(20);
Run Code Online (Sandbox Code Playgroud)

... 但是采样差异而不是实际值.

如何在accumulator_set不手动跟踪最后一个值的情况下执行此操作?

c++ boost

5
推荐指数
1
解决办法
851
查看次数

使用Winsock将客户端TCP套接字绑定到特定本地端口时,SO_REUSEADDR没有任何效果

我正在将客户端 TCP套接字绑定到特定的本地端口.为了处理在插座保持在局势TIME_WAIT状态一段时间后,我用setsockopt()SO_REUSEADDR一个插座上.

它可以在Linux上运行,但在Windows WSAEADDRINUSE上不起作用,connect()当前一个连接仍然存在时,我可以随叫随到TIME_WAIT.

MSDN并不完全清楚客户端套接字会发生什么:

[...]对于需要将多个套接字绑定到同一端口号的服务器应用程序,请考虑使用setsockopt(SO_REUSEADDR).客户端应用程序通常不需要在所有连接上调用bind-connect自动选择未使用的端口.[...]

我该如何避免这种情况?

c sockets winapi tcp winsock

5
推荐指数
1
解决办法
4万
查看次数

boost :: python string-convertible属性

我有一个C++类,它有以下方法:

class Bar {
...
    const Foo& getFoo() const;
    void setFoo(const Foo&);
};
Run Code Online (Sandbox Code Playgroud)

class Foo可以转换为std::string(它有一个隐式构造函数std::string和一个std::string强制转换运算符).

我定义了一个Boost.Python包装类,除其他外,它基于前两个函数定义一个属性:

class_<Bar>("Bar")
    ...
    .add_property(
        "foo",
        make_function(
            &Bar::getFoo,
            return_value_policy<return_by_value>()),
        &Bar::setFoo)
    ...
Run Code Online (Sandbox Code Playgroud)

我还将该类标记为可转换为/来自std::string.

implicitly_convertible<std::string, Foo>();
implicitly_convertible<Foo, std::string>();
Run Code Online (Sandbox Code Playgroud)

但在运行时,我仍然遇到尝试访问此属性的转换错误:

TypeError: No to_python (by-value) converter found for C++ type: Foo
Run Code Online (Sandbox Code Playgroud)

如何在没有太多包装函数的样板的情况下实现转换?(我已经在课堂上拥有所有转换功能Foo,因此不希望重复.

c++ python boost boost-python

5
推荐指数
1
解决办法
2233
查看次数

用更新的GCC版本替换GCC的系统级C ++运行时是否安全?

Linux C ++程序使用GCC链接针对libgcc_s.so.1libstdc++.so.6库构建,每个库都包含多个ABI:较新的版本包含以前版本的ABI和新的ABI。GCC ABI政策文件指出,针对较早的运行时构建的程序应能够与新的运行时一起运行。因此,理论上,较旧的二进制文件应可在新系统上运行。

如果我的系统具有较旧的运行时,并且不想在该系统上升级GCC的麻烦,是否可以用新的库手动替换上述库?从理论上讲,所有链接到它的旧可执行文件都应该起作用(包括GCC本身),但这听起来像是一团糟。

这样做安全吗?

c++ linux gcc

5
推荐指数
1
解决办法
643
查看次数

面向对象的编程

我正在用C++开发一个项目.我意识到我的程序不是OO.

我有一个main.cpp,有几个标题用于不同的目的.每个头基本上是相关函数的集合,其中一些全局变量用于保留数据.我还有一个用于管理窗口的windowing.h.这包含winMain()和winProc().当事件发生时(如点击按钮)或需要信息时(例如"创建此窗口有多大?"),它会调用驻留在main.cpp中的函数.这些函数在windowing.h中包含的单独.h文件中声明.

是否值得将此更改为OO?是值得的工作.有没有更好的方法可以在没有太多变化的情况下构建程序?

欢迎所有反馈,谢谢你花时间阅读本文.

c c++ oop

5
推荐指数
1
解决办法
249
查看次数

如何使用两个参数使用overload()运算符; 喜欢(3,5)?

我有一个数学矩阵类.它包含一个成员函数,用于访问该类的任何元素.

template<class T>
class Matrix
{
    public:
        // ...
        void SetElement(T dbElement, uint64_t unRow, uint64_t unCol);
        // ...
};

template <class T>
void Matrix<T>::SetElement(T Element, uint64_t unRow, uint64_t unCol)
{
    try
    {
        // "TheMatrix" is define as "std::vector<T> TheMatrix"
        TheMatrix.at(m_unColSize * unRow + unCol) = Element;
    }
    catch(std::out_of_range & e)
    {
        // Do error handling here
    }
}
Run Code Online (Sandbox Code Playgroud)

我在我的代码中使用此方法,如下所示:

// create a matrix with 2 rows and 3 columns whose elements are double
Matrix<double> matrix(2, 3);
// change the value …
Run Code Online (Sandbox Code Playgroud)

c++ operator-overloading matrix

5
推荐指数
1
解决办法
617
查看次数

Go 中“Must”模式的内置助手

是否有更多内置包装器来制作返回(X, error)成功执行或中止的函数,例如regexp.MustCompile

我在谈论这样的事情,但更多的是“内置”。

go

5
推荐指数
1
解决办法
4910
查看次数

具有故事板的特定于目标的本地化字符串目录

我有一个带有两个变体(whitelabel)的应用程序,实现为两个独立的目标.这两个应用程序是本地化的,可能具有略微不同的面向用户的字符串,具体取决于目标.

我将Localized.strings文件拆分为共享部分和每个目标部分.每个目标编译一个共享Localized.strings字符串和一个Target.strings变体.

然后我可以选择NSLocalizedString()NSLocalizedStringFromTable()查找相应的字符串,甚至组合它们并首先查找特定于目标的字符串,如果没有找到,则回退到默认目录.

到现在为止还挺好.

绊脚石是IB文件,因为每个storyboard/xib只能有一个字符串文件,我不能包含每个目标的变种.

我已经考虑了许多构建时黑客(用于合并字符串文件的自定义脚本),但想知道是否有更好的解决方法.

理想情况下,我想覆盖字符串查找机制,因此它支持多个字符串目录,并首先查看特定于目标的目录.

xcode localization internationalization storyboard ios

5
推荐指数
0
解决办法
170
查看次数