小编Ste*_*nov的帖子

优先合并两个 JavaScript 对象

我有两个 JavaScript 对象,例如

let master = {A:0, B:2};
let slave = {B:1, C:1};
Run Code Online (Sandbox Code Playgroud)

我需要:

result == {A:0, B:2, C:1};
Run Code Online (Sandbox Code Playgroud)

JS有一个简单的命令可以这样合并吗?

javascript merge

3
推荐指数
1
解决办法
3154
查看次数

从迭代器/生成器获取单个屈服值

我需要在每次调用后返回递增整数的实体.

例如,我有代码.

var id = 0; //global variable =(

function foo() {
   ....
   console.log("Your unique ID is " + id++);
   ....
}
Run Code Online (Sandbox Code Playgroud)

它工作正常.但我想使用发电机来完成这项工作.

就像是:

function* getId() {
   var id = 0;
   while (true) {
       yield id++;
   }
}

 function foo() {
   ....
   console.log("Your unique ID is " + getId());
   ....
}
Run Code Online (Sandbox Code Playgroud)

但结果只是空图引号.我错过了什么?也许使用发电机对于这类发电来说是一个坏主意?

javascript generator node.js ecmascript-6

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

吸气剂静态矢量

我上课了.但是当我为它添加静态向量和getter时,我遇到了编译错误.

这是一个例子:

// Config.h file
class Config {
    static std::vector<std::string> m_RemoteVideoUrls;
    ...
public:
    static std::vector<std::string> GetRemoteVideoURLs();
};


// Config.cpp file
static std::vector<std::string> m_RemoteVideoUrls = {"some url"};
...
std::vector<std::string> Config::GetRemoteVideoURLs() {
    return m_RemoteVideoUrls;
}
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio 2017中编译期间遇到了这个奇怪的错误

1>config.obj : error LNK2001: unresolved external symbol "private: static class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > Config::m_RemoteVideoUrls" (?m_RemoteVideoUrls@Config@@0V?$vector@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$allocator@V?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@2@@std@@A)
Run Code Online (Sandbox Code Playgroud)

经过几次实验,我明白了我的错误m_RemoteVideoUrls.因为这个存根工作:

std::vector<std::string> Config::GetRemoteVideoURLs() {
    return std::vector<std::string>{"a", "b"};// m_RemoteVideoUrls;
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用:

std::vector<std::string> Config::GetRemoteVideoURLs() {
    LoadConfigIfRequired();
    std::vector<std::string> tmp = m_RemoteVideoUrls; …
Run Code Online (Sandbox Code Playgroud)

c++ static stdvector visual-studio

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

是否可以为void *创建shared_ptr?

我有可以包含指向某些数据及其数据类型的指针的类。因此,每时每刻我都可以使用强制转换为适当类型的数据来处理这些数据。

这是int和float的示例:

enum MyType {
    NO_TYPE,
    INT,
    FLO
};

class MyClass {
public:
    MyType type;
    void* data;

    MyClass(int i)
        :
            type(MyType::INT)
    {
        data = (void*) new int(i);
    }

    MyClass(float i)
        :
            type(MyType::FLO)
    {
        std::cout << "Constructor\n";
        data = (void*) new float(i);
    }

    MyClass()
        :
            type(MyType::NO_TYPE)
    {
        std::cout << "Constructor (default)\n";
        data = nullptr;
    }

    void Copy(const MyClass &from)
    {
        this->type = from.type;
        if (this->type == MyType::INT)
            this->data = (void*) new int (*((int*)from.data));
        if (this->type == MyType::FLO)
            this->data = (void*) new …
Run Code Online (Sandbox Code Playgroud)

c++ shared-ptr

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

标准库中的双重链接循环列表

我需要双向链接的循环列表,但是无法在STL容器中找到它(单独链接循环列表).

它可能看起来像这样:

element 0   <->   element 1  <-> ... <-> ...

    ^                                     ^
    |                                     |
    v                                     v

element n   <->   element n-1   <->   element n-2
Run Code Online (Sandbox Code Playgroud)

你能告诉我我错过了什么吗?提前致谢.

c++ linked-list c++-standard-library

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

捕捉双重免费并妥善处理

我遇到了一些崩溃delete().我尝试delete()用try-catch 包装并正确处理它,但我仍然崩溃而不是陷入catch部分.

这是我尝试做的示例.

int *i = new int();
delete (i);
try {
    delete (i);
}catch (...) {
    std::cout << "Oops";
}
Run Code Online (Sandbox Code Playgroud)

问题是"为什么我不能这样抓住它?" 和"我怎么能正确地抓住这样的情况?".

c++ crash memory-management

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

VS 2010未检测到模板内代码的任何更改

我们假设我已经在头文件中编写了下一个代码

template<typename MyType> 
inline void function()
{
    /*some code here*/;
} 
Run Code Online (Sandbox Code Playgroud)

当我在Visual Studio 2010 SP1中按下构建解决方案时,它会构建代码,然后我会得到下一个

========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 
Run Code Online (Sandbox Code Playgroud)

似乎一切都很好,但是如果我在模板中添加任何代码(即使它是一个有错误的代码),VS也不会检测到更改并告诉构建成功.例如:

template<typename MyType> 
inline void function()
{
    this is a plane text so, compiler should give an error //line with error
    /*some code here*/;
} 
Run Code Online (Sandbox Code Playgroud)

构建结果:

 ========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ========== 
Run Code Online (Sandbox Code Playgroud)

如果我在模板外添加任何错误代码,VS会告诉我构建FAILED,之后它实际上会找到模板外部和内部的所有错误.强制VS检测模板内部任何更改的另一种方法是重建整个项目,但在我的情况下需要花费太多时间,所以我想找到一些其他方法来强制VS检测我的代码中的更改?任何人都可以建议为什么会出现这种情况以及如何克服它?

c++ visual-studio-2010

0
推荐指数
1
解决办法
35
查看次数

List.ForEach()中的'if'指令

我知道在SO的lambda语句中有很多关于"if"的问题.对不起,如果它是重复,但我真的找不到答案.

我有这个代码,它运作良好

    foreach (Pair<Myclass, int> A in myList) //mylist is List<Pair<Myclass, int>>
        if (A.second <= _width)
            verified.Add(A);
Run Code Online (Sandbox Code Playgroud)

是否有可能替换它myList.ForEach()

我试过了:

myList.ForEach(A => if (A.second < _width) verified.Add(A));
Run Code Online (Sandbox Code Playgroud)

myList.ForEach(A => f.second < _width ? verified.Add(A):do_nothing());
Run Code Online (Sandbox Code Playgroud)

但它不起作用.每次当我尝试添加'if'时,事情都会出错.

.net c# foreach list

0
推荐指数
2
解决办法
81
查看次数