小编Pra*_*ari的帖子

C++/CLI + C++ Native会提高性能吗?

在我们的项目中,我们有三个模块.C++(Native),C++/CLI,C#.我们使用C++/CLI在C#中使用C++(Native)代码.为此我们静态地将C++(Native)与C++/CLI连接起来,现在我们可以使用C++/C++管理的dll.

现在,C++(Native)中的代码是简单的数学算法(No Win32,不与OS交互).当我将静态库与C++/CLI链接时,它不会成为托管代码吗?意味着它不属于CLR.

在C#中使用带C++/CLI的C++(Native)静态库是否会提高我的性能?我是否可以用C#本身而不是本机代码来编写代码.

请注意,我们在C++(Native)代码中广泛使用了标准C++库的算法,容器和迭代器.

谢谢.

c# c++ performance c++-cli

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

allocator作为vector和list中的默认参数

当我尝试使用像vector,list这样的顺序容器时,它会显示第二个默认参数as,

typename _Ax = allocator <_Ty> >
Run Code Online (Sandbox Code Playgroud)

我很想知道为什么在其他顺序容器中需要它但不在队列中.这个的确切目的是什么.

最好的祝福

c++ stl

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

为什么使用无名对象会出错?

我是Java的新手(在Android上工作).我见过代码,

new DownloadFilesTask().execute(url1, url2, url3);
Run Code Online (Sandbox Code Playgroud)

这里无名(我不确定我是否使用了正确的术语)对象用于调用DownloadFilesTask对象的execute方法.

同样我尝试使用C++,以下是代码片段.

#include <iostream>
#include <vector>

using namespace std;

class Sam
{
public:
    void Access()
    {
        cout<<"Access";
    }
};

int main(int argc, char* argv[])
{
    (new Sam())->Access; //for Access method intillesence is working fine

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此代码时,我收到编译错误,

错误1错误C3867:'Sam :: Access':函数调用缺少参数列表; 使用'&Sam :: Access'创建指向成员的指针c:\ users \new-user\documents\visual studio 2012\projects\autoexample\autoexample\autoexample.cpp 18 1 autoExample

我不明白错误的含义和原因.这种类型的代码在C++中是否可行?

谢谢.

c++ java language-features compiler-errors

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

strtok如何以及为什么记得字符串?

在下面的C程序中,strtok用于分割字符串.程序提供例外输出,但我无法理解它是如何工作的.

首先,我们将字符串传递给tokenizedelimiter.但是在后来的迭代中,我们只是过去了NULL.函数如何以及为何记住字符串?

如果我想同时使用tokenize到不同的字符串怎么办?

#include "stdafx.h"
#include <cstdio>
#include <cstring>

int main(int argc, char* argv[])
{
    char arr[] = "This is string to split";

    char * subStr = new char[10];
    subStr = strtok(arr, " ");

    while (subStr)
    {
        printf("%s\n", subStr);
        subStr = strtok(NULL, " ");
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

This
is
string
to
split
Run Code Online (Sandbox Code Playgroud)

c string split libc strtok

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

为什么在使用迭代器时添加到向量不起作用?

我有两个代码示例,它们完全相同.一个是C++ 03和C++ 11.

C++ 11

int main()
{
    vector<int> v = {1,2,3};

    int count = 0;

    for each (auto it in v)
    {
        cout << it<<endl;

        if (count == 0)
        {
            count++;
            v.push_back(4);//adding value to vector
        }
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C++ 03

int main()
{
    vector<int> v = {1,2,3};

    int count = 0;

    for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
    {

        cout << *it<<endl;

        if (count == 0)
        {
            count++;
            v.push_back(4);//adding value to vector
        }
    }

    return …
Run Code Online (Sandbox Code Playgroud)

c++ iterator vector c++-standard-library c++11

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

如何知道导致异常的哪一行?

我是XCode和Objective C的新手.我故意错误地为NSString*分配编号.

NSString* s = @1;
[s uppercaseString];
Run Code Online (Sandbox Code Playgroud)

虽然XCode给了我警告,但这段代码会编译.但在运行时我得到例外.现在我在日志中看到了(对不起图像,由于格式化,我无法正确粘贴文本)

在此输入图像描述

在此日志中,我如何找到确切的错误位置.这个日志如何告诉我要更改哪些代码.

debugging xcode objective-c ios lldb

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

"内存高效的双向链表"如何运作?

Data Structures and Algorithms Made Easy中,struct内存高效的内存列表如下,

struct LinkNode
{
 int data;
 struct LinkNode* ptrdiff;
}
Run Code Online (Sandbox Code Playgroud)

ptrdiff,将完成上一个和下一个节点的xoring.例如,前一个节点的地址为100,下一个节点的地址为500.

所以,在ptrdiff地址将是400.现在,如何通过了解其地址的xoring,如何移动到下一个或上一个节点(就像我们在双向链接列表中那样)?

我错过了这里的任何一步吗?

c algorithm xor-linkedlist data-structures mem.-efficient-linkedlist

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

为什么在仍然通过时需要返回*this?

我写了下面的类,它重载了赋值运算符.如示例所示,我*this从赋值运算符返回.

class Sample
{
    int *p;
    int q;

public:

    Sample()
    {
        cout<<"Constructor called"<<endl;

        p = new int;
        q = 0;
    }


    Sample& Sample::operator =(const Sample &rhs)
    {
        cout<<"Assignment Operator"<<endl;

        if(this != &rhs)
        {
            delete p;

            p = new int;
            *p = *(rhs.p);
        }

        return *this;
    }

    void display()
    {

        cout<<"p = "<<p<<"     q = "<<q<<endl;
    }
};
Run Code Online (Sandbox Code Playgroud)

当我调用赋值运算符时a = b,就像,a.operator=(b);.

现在我正在调用一个运算符函数,这已经被传递,operator =然后为什么需要从赋值运算符返回它?

c++ class operator-overloading assignment-operator

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

为什么允许引用间接指向?

int *ptr = 0;
int &ref = *ptr;
Run Code Online (Sandbox Code Playgroud)

我在Visual Studio中编写上面的代码,它的工作原理?在这里,我指向NULL.为什么允许这样做?指针可以采用任何地址,NULL或甚至无效的地址.是否允许引用间接指针?

那么为什么说"参考不能为空".在这里,是指不参考NULL

c++ pointers reference

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

如何使用 Win32/MFC API 提取 .iso 文件?

我们有 C++ Win32/MFC 应用程序,我需要在其中提取 .iso 文件。我找不到任何 API。

请考虑我无法使用 PowerShell,因为我们想在 Windows Server 2008 中运行我们的应用程序。

如果我们能够在不使用任何第三方库的情况下做到这一点,那就太好了。

Windows 编程中有内置支持提取 iso 文件吗?

c++ windows winapi mfc

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