小编Nav*_*een的帖子

使用变换创建新矢量

我有一个整数向量,我想将它转换为对的向量(对由bool和int组成).我目前的代码很简单:

    std::vector<int> a;
    std::vector<std::pair<bool,int> > b;

    a.push_back(1);
    a.push_back(2);
    a.push_back(3);

    for(int i = 0; i < a.size(); ++i)
    {
        b.push_back(std::make_pair(false, a[i]));
    }
Run Code Online (Sandbox Code Playgroud)

如果不自己编写循环,有没有办法做到这一点?可能使用一些算法?

c++ stl

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

C和C++中的静态变量

声明为staticC和C++之间的任何函数之外的变量之间是否存在任何差异.我读到这static意味着文件范围和变量将无法在文件外部访问.我还读到在C中,全局变量是static.那么这是否意味着C中的全局变量无法在另一个文件中访问?

c c++ static global-variables

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

std :: multiset是否保证插入顺序?

我有一个std::multiset存储元素class A.我operator<为这个课提供了自己的实现.我的问题是,如果我在这个multiset中插入两个等效对象,他们的顺序是否有保证?例如,首先我将一个对象a1插入到集合中,然后将一个等效对象a2插入到该集合中.当我遍历集合时,我可以期待a1之前a2的结果吗?如果不是,有没有办法用multiset实现这个目的?

c++ stl standard-library data-structures

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

内存对齐__attribute __((aligned(8)))

我在书中得到了一个程序

#include <stdio.h>
int main( )
{
    struct data
    {
        int a    __attribute__( ( aligned ( 8 ) ) ) ;
        char ch  __attribute__( ( aligned ( 1 ) ) ) ;
        float s  __attribute__( ( aligned ( 4 ) ) ) ;    
    } ; 
    struct data e ;
    printf ( "\n%u %u %u", &e.a, &e.ch, &e.s ) ;
    printf ( "\n%d", sizeof ( e ) ) ;
    return 0 ;
}
Run Code Online (Sandbox Code Playgroud)

当我在安装在Windows 7机器上的cygwin上运行它时.我正在输出

2280712 2280716 2280720 16

为什么我得到这个输出?我期待着输出

2280712 …

c

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

修改右值参考值 - 它是如何工作的?

下面的代码编译并运行得很好.正当我以为我开始对rvalue引用和std :: forward进行了很好的掌握 - 这个非常简单的代码揭示了rvalue有一些非常基本的东西,我不明白.请澄清.

#include <iostream>
#include <iomanip>
using namespace std;

void fn( int&& n )
{
    cout << "n=" << n << endl;
    n = 43;
    cout << "n=" << n << endl;
}


int main( )
{
    fn( 42 );
}
Run Code Online (Sandbox Code Playgroud)

我用g ++ 4.7使用以下命令行编译它:
g ++ --std = c ++ 11 test.cpp

输出为:
n = 42
n = 43

我的主要问题是编译器在函数fn中存储'n'的位置?

c++ rvalue-reference c++11

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

使用std :: mem_fun时如何传递两个参数?

可以说我有这样的层次结构(这只是一个测试程序.请不要指出与内存泄漏有关的任何内容,析构函数不是虚拟的等等):

class I
{
public:
    virtual void fun(int n, int n1) = 0;
};

class A : public I
{
public:
    void fun(int n, int n1)
    {
        std::cout<<"A::fun():" <<n<<" and n1:" <<n1<<"\n";
    }
};

class B : public I
{
public:
    void fun(int n, int n1)
    {
        std::cout<<"B::fun():" <<n<<" and n1:" <<n1<<"\n";
    }
};


int  main()
{
    std::vector<I*> a;
    a.push_back(new A);
    a.push_back(new B);

    //I want to use std::for_each to call function fun with two arguments.
}
Run Code Online (Sandbox Code Playgroud)

如何调用fun()方法,该方法使用std :: for_each获取两个参数?我想我必须使用std :: …

c++ stl

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

使用SetUnhandledExceptionFilter()为访问冲突异常创建minidump

每当从我的代码生成结构化异常时,我使用以下代码创建一个minidump文件:

void CreateMiniDump( EXCEPTION_POINTERS* pep ) 
{
  // Open the file 
typedef BOOL (*PDUMPFN)( 
  HANDLE hProcess, 
  DWORD ProcessId, 
  HANDLE hFile, 
  MINIDUMP_TYPE DumpType, 
  PMINIDUMP_EXCEPTION_INFORMATION ExceptionParam, 
  PMINIDUMP_USER_STREAM_INFORMATION UserStreamParam, 
  PMINIDUMP_CALLBACK_INFORMATION CallbackParam
);


    HANDLE hFile = CreateFile( _T("C:/temp/MiniDump.dmp"), GENERIC_READ | GENERIC_WRITE, 
    0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL ); 

    HMODULE h = ::LoadLibrary(L"DbgHelp.dll");
    PDUMPFN pFn = (PDUMPFN)GetProcAddress(h, "MiniDumpWriteDump");

  if( ( hFile != NULL ) && ( hFile != INVALID_HANDLE_VALUE ) ) 
  {
    // Create the minidump 

    MINIDUMP_EXCEPTION_INFORMATION mdei; 

    mdei.ThreadId           = GetCurrentThreadId(); 
    mdei.ExceptionPointers  = pep; 
    mdei.ClientPointers     = …
Run Code Online (Sandbox Code Playgroud)

c++ debugging winapi windbg

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

PowerShell函数中的类型转换问题

我是PowerShell脚本的新手,正在尝试Function.这是我写的代码:

Function Add
{
   $sum = 0;
   for($i = 0; $i -le $args.length; ++$i)
   {
     [int] $num = $args[$i]
     $sum += $num
   }
   Write-Output "Sum is $sum"
}
Run Code Online (Sandbox Code Playgroud)

我试着打电话使用Add 1,2,3.但是,当我执行时,我收到以下错误:

无法将"System.Object []"类型的"System.Object []"值转换为"System.Int32"类型.

知道如何解决这个问题吗?

powershell

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

使用C++ 11,我还需要一个用于Unicode文本的非标准字符串操作库吗?

我注意到std :: string的length方法返回字节长度,std :: u16string中的相同方法返回2字节序列的数量.

我还注意到,当字符或代码点在BMP之外时,长度返回4而不是2.

此外,Unicode转义序列仅限于\ unnnn,因此转义序列不能插入U + FFFF上方的任何代码点.

换句话说,似乎不支持BMP之外的代理对或代码点.

鉴于此,使用理解UTF-8,UTF-16,代理对等的非标准字符串操作库是否被接受或推荐?

我的编译器是否有错误或我是否错误地使用标准字符串操作方法?

例:

/*
* Example with the Unicode code points U+0041, U+4061, U+10196 and U+10197
*/

#include <iostream>
#include <string>

int main(int argc, char* argv[])
{
    std::string example1 = u8"A?";
    std::u16string example2 = u"A?";

    std::cout << "Escape Example: " << "\u0041\u4061\u10196\u10197" << "\n";
    std::cout << "Example: " << example1 << "\n";
    std::cout << "std::string Example length: " << example1.length() << "\n";
    std::cout << "std::u16string Example length: " << …
Run Code Online (Sandbox Code Playgroud)

c++ unicode c++11

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

等待命令在C#中完成

我是C#的新手,并尝试开发一个小型应用程序,在内部打开命令提示符并在此处执行一些命令.这是我到目前为止所做的:

    m_command = new Process();
    m_command.StartInfo.FileName = @"cmd.exe";
    m_command.StartInfo.UseShellExecute = false;
    m_command.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
    m_command.StartInfo.CreateNoWindow = true;
    m_command.StartInfo.RedirectStandardInput = true;
    m_command.StartInfo.RedirectStandardOutput = true;

    m_command.Start();

    m_reader = m_command.StandardOutput;
    m_writer = m_command.StandardInput;

    m_writer.WriteLine("Somecommand"); //execute some command
Run Code Online (Sandbox Code Playgroud)

如您所见,我已重定向输入和输出.我的问题是如何同步执行"some命令",即我想使用重定向输出读取命令的结果.为此,我必须等到我使用WriteLine调用的命令才能完成.我怎么做?

c#

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