小编Mar*_*Mao的帖子

究竟是什么警告C4718(Visual Studio)?

msdn链接

在这打字:

'function call':递归调用没有副作用,删除

A函数包含递归调用,否则没有副作用.正在删除对此功能的调用.程序的正确性不受影响,但行为是.离开调用可能会导致运行时堆栈溢出异常,而删除调用会消除这种可能性.

导致此警告的代码是:

template<class Key, class Value>
void Map<Key, Value>::Clear(NodeType* pNode)
{
    ((Key*) (pNode->m_key))->~Key();
    ((Value*) (pNode->m_item))->~Value();

    NodeType* pL = pNode->GetLeftChild();
    NodeType* pR = pNode->GetRightChild();
    if (pL != &m_dummy)
    {
        Clear(pL);
    }
    if (pR != &m_dummy)
    {
        Clear(pR);
    }
}
Run Code Online (Sandbox Code Playgroud)

还有1点:这个警告只发生在发布版本中(/ Ox)

这警告是什么?谢谢!

c++ recursion compiler-warnings visual-studio-2012

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

#define或char*字符串在哪里驻留在内存中?

可能重复:
是否在静态内存中创建了c ++中的字符串文字?

如果我做的:
const char* StringPtr = "string0",
那么它在内存肯定某个地方,我可以得到的地址StringPtr.

但如果我这样做
#define STRING0 "string0",那么STRING0居住在哪里?
或者,STRING0因为编译器替换使用STRING0by 而不存在于内存中"string0"

据我所知,无论何时在代码中编写任何字符串,编译器都必须将其放在内存中,但我不知道它的确切行为.
但我对此并不十分肯定.

任何人都可以解释编译器如何处理#define-ed或声明的字符串char*

还有哪一个更好?到#define,extern const char*extern const std::string在字符串的头文件

谢谢!

c++ string

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

如何在带有输入的map元素方法上使用std :: for_each?

我有:

struct Mystruct
{
    void Update(float Delta);
}

typedef std::map<int, Mystruct*> TheMap;
typedef TheMap::iterator         TheMapIt;

TheMap Container;
Run Code Online (Sandbox Code Playgroud)

并且想做:

for(TheMapIt It = Container.begin(), Ite = Container.end(); It != Ite; ++It)
{
    It->second->Update(Delta);
}
Run Code Online (Sandbox Code Playgroud)

使用std::for_each,怎么做?

我想我可以声明如下函数:

void Do(const std::pair<int, Mystruct*> Elem)
{
    Elem->Update(/*problem!*/); ---> How to pass Delta in?
}
Run Code Online (Sandbox Code Playgroud)

或者制作另一个结构:

struct Doer
{
    Doer(float Delta): d(Delta) {}

    void operator(std::pair<int, Mystruct*> Elem)
    {
        Elem->Update(d);
    }
}
Run Code Online (Sandbox Code Playgroud)

但这需要一个新的结构.

我想要实现的是使用简单std::for_each的东西std::bind_1st,std::mem_fun就像这样std::vector,有可能吗?

std在使用前考虑使用方式boost …

c++ stl map

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

if-else比切换更快,为什么?(在ActionScript3中)

测试了以下内容:

        var timer:int = getTimer();
        trace(timer);

        for ( var g:int = 0; g < 10000000; ++g)
        {
            var mod0:int = g % 10;
            var sum0:String = "";

            switch(mod0)
            {
                case 0: sum0 = "0"; break;
                case 1: sum0 = "1"; break;
                case 2: sum0 = "2"; break;
                case 3: sum0 = "3"; break;
                case 4: sum0 = "4"; break;
                case 5: sum0 = "5"; break;
                case 6: sum0 = "6"; break;
                case 7: sum0 = "7"; break;
                case 8: sum0 …
Run Code Online (Sandbox Code Playgroud)

performance if-statement actionscript-3 switch-statement

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

为什么结构中的命名联合会覆盖其他结构成员?

struct TestStruct
{   
    int a;
    int b;

    union
    {
        char c[2];
        int d;
    };
};

TestStruct instance;
Run Code Online (Sandbox Code Playgroud)

如果我做

instance.a = 100; 
instance.b = 200; 
instance.d = 300;
Run Code Online (Sandbox Code Playgroud)

一切安好.

但是,如果我给工会一个名字:

struct TestStruct
{   
    int a;
    int b;

    union ZZZ // Note here!!
    {
        char c[2];
        int d;
    };
};

TestStruct instance;
Run Code Online (Sandbox Code Playgroud)

我又做了同样的事情:

instance.a = 100;
instance.b = 200;
instance.ZZZ::d = 300;
Run Code Online (Sandbox Code Playgroud)

然后

instance.ZZZ::d = 300;
Run Code Online (Sandbox Code Playgroud)

覆盖instance.a300,为什么?!

此外,如果它具有名称,我无法在调试器监视列表中看到联合成员.

我正在使用Visual Studio 2008.

c++ struct unions

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

C ++运行时间(以毫秒为单位)

{
    clock_t t1, t2;
    double time1 = 0;
    t1 = clock();
    bubbleSort(data, n);
    t2 = clock();
    time1 = difftime(t2,t1);
    cout<<"Bubble Sort: \n";
    for (int y = 0; y<n; y++)
    {
        cout<<data[y]<<"\t";
    }
    cout<<endl;
    cout<<"Algorithm Runtime is: "<<time1<<" milliseconds.";
}
Run Code Online (Sandbox Code Playgroud)

我试图获取运行时间(以毫秒为单位),但我总是得到0。只有输入1000+个随机数时,我才能获取运行时间。我想要得到的是数字较低的运行时间。谁能帮我。

我尝试了在该论坛中看到的所有其他方式,但对我来说似乎不起作用。也许我做错了方法。

先感谢您。

c++

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

如何将文本放入右侧的 ListItem 中?

我现在有了这些,并且“YoYo”文本向左对齐(默认情况下)。我想控制“YoYo”文本的位置,以便其中一些可以出现在右侧。

我试图提供一个带有justifyContent:'flex-end'或的样式对象,alignSelf:'flex-end'但它们都不起作用。

  <List>
    <ListItem containerElement={<ChatObject id='1' value="YoYo" style={{alignSelf:'flex-end'}} />} />
    <ListItem containerElement={<ChatObject id='1' value="YoYo" />} />
    <ListItem containerElement={<ChatObject id='1' value="YoYo" />} />
    <ListItem containerElement={<ChatObject id='1' value="YoYo" />} />
    <ListItem containerElement={<ChatObject id='1' value="YoYo" />} />
  </List>
Run Code Online (Sandbox Code Playgroud)

ChatObject定义为:

render() {
    return (
      <TextField
        id={this.props.id}
        value={this.props.value}
        underlineShow={false}
      />
    );
  }
Run Code Online (Sandbox Code Playgroud)

css flexbox reactjs material-ui

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