小编nav*_*8tr的帖子

使用linq组合两个可能的空列表

我有两个清单:

    var myIds = new List<int>()
        {
            1, 2, 3
        };

    var yourIds = new List<int>()
        {
            2, 3, 4
        };
Run Code Online (Sandbox Code Playgroud)

这两个列表可以组合成一个这样的:

myIds.Union(yourIds)
.Select(x => new 
             { 
                 Id = x,
                 Mine = myIds.Contains(x), 
                 Yours = yourIds.Contains(x)
             });
Run Code Online (Sandbox Code Playgroud)

新列表如下所示:

Id    Mine     Yours
---------------------
1      T         F
2      T         T
3      T         T
4      F         T
Run Code Online (Sandbox Code Playgroud)

当列表包含元素时,这很有用.但是,如果列表可能为null,该怎么办?我怎么能处理空列表?

c# linq

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

MatLab - 如何生成n> = 4的n边形状

我是Matlab的新手,但我对编程知之甚少.

对于类,我们已经被要求生成一个矩阵,该矩阵给出了n> = 4的二维n边形状的顶点.然后,生成矢量以连接顶点.我们还给出了一个提示:通过将从原点绘制的矢量添加到两个相邻顶点中的每一个,可以找到每个线段的矢量.

我知道如何使用A = [1 1创建矩阵; 1 2; 2 2; 2 1]但我不确定如何绘制给定此矩阵或任何其他矩阵的向量.

plot()函数看起来很有希望,但我不确定如何将它与矩阵一起使用.

谢谢你的任何建议.

顺便说一下,我正在使用Matlab 2011a

matlab vector polygon matrix

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

如何使我的Windows API GUI代码更加面向对象?

对于一个课程项目,我正在创建一个带有GUI的tic tac toe游戏.作业需要使用类.

该作业最初并不需要GUI,因此我使用命令行界面创建了一个工作的tic tac toe游戏.但是,为了获得一些额外的积分,我现在想要实现一个GUI.问题是我们还没有涉及GUI设计.

到目前为止,我能够在其上显示一个带有9个按钮的窗口.从下面的代码中可以看出,这一切都是在没有类的情况下完成的.我怎么能将我的代码分成单个类或类?然后,在main中创建对象后如何显示GUI?

我不是试图引入已经包含的windows.h系统头之外的任何框架依赖项.

最后,我想要一个处理接口的类和一个处理逻辑的类.

谢谢你的任何建议

main.cpp中

#include <windows.h>

LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);


int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
                    LPSTR lpCmdLine, int nCmdShow )
{
  MSG  msg ;    
  WNDCLASS wc = {0};
  wc.lpszClassName = TEXT( "Buttons" );
  wc.hInstance     = hInstance ;
  wc.hbrBackground = GetSysColorBrush(COLOR_3DFACE);
  wc.lpfnWndProc   = WndProc ;
  wc.hCursor       = LoadCursor(0, IDC_ARROW);


  RegisterClass(&wc);
  CreateWindow( wc.lpszClassName, TEXT("Buttons"),
                WS_OVERLAPPEDWINDOW | WS_VISIBLE,
                150, 150, 340, 360, 0, 0, hInstance, 0);  

  while( GetMessage(&msg, NULL, 0, 0)) { …
Run Code Online (Sandbox Code Playgroud)

c++ oop winapi

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

静态函数调用不起作用 (C++)

由于某种原因,以下代码在 DevC++ 中给出编译器错误: [Error] 无法声明成员函数 'static double* Sort::bubbleSort(double*, int)' to have static links [-fpermissive]

冒泡排序.cpp:

#include <iostream>
#include "Sort.h"

int main(int argc, char** argv) {

    double list[] = {4.0, 4.5, 3.2, 10.3, 2.1, 1.6, 8.3, 3.4, 2.1, 20.1};
    int size = 10;
    double* sortedList = Sort::bubbleSort(list, size);

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

排序.h:

class Sort
{
    public: 
        static double* bubbleSort (double list[], int size);    
}
;
Run Code Online (Sandbox Code Playgroud)

排序.cpp:

#include "Sort.h"
#include <algorithm> // std::swap

static double* Sort::bubbleSort (double list[], int size)
{
    bool …
Run Code Online (Sandbox Code Playgroud)

c++ bubble-sort

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

(C++)如何基于条件声明对象类成员

我正在开发一个面向对象的tic tac toe游戏,我遇到了问题.我的一个类充当游戏的主控制器并控制所有其他对象.下面是该类的剥离版本.

最终用户可以选择一到两个玩家.因此,我没有必要创建第二个玩家和一个ai玩家.游戏只需要一个或另一个.正如您在下面看到的,我尝试使用if语句来解决问题,但是对象没有范围.

如何根据传递给Game构造函数的玩家数量初始化一个或另一个对象?

谢谢!

Game.h

#include "Player.h"
#include "AIPlayer.h"

class Game 
{
    private:
        Player human;

        // I would like to put these here so they have scope
        // but it is unecessary to declare them both
        // If the user chooses one player then human2 is unecessary
        // if the user choosed two player then ai is unecessary
        AIPlayer ai;
        Player human2; 

    public: 
        Game(int players)
        {
            if (players == 1)
            {
                AIPlayer ai; // this does not have …
Run Code Online (Sandbox Code Playgroud)

c++ scope

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

如何访问std :: auto_ptr指向的对象

在我的TicTacToe游戏中,我遇到了虚拟功能的问题.以下代码在Dev C++中引发错误:"class std :: auto_ptr"没有名为'makeAMove'的成员.

根据错误,问题与makeAMove函数有关,但我看不出有什么问题.另外,我应该提一下,我正在使用已弃用的auto_ptr函数而不是unique_ptr,因为显然教师对我的代码进行分级的辅助工具没有符合C++ 11的编译器.

现在playGame和makeAMove函数都没有做任何事情,但我想在继续之前找出导致错误的原因.

谢谢你的任何建议.

这是相关的代码:

Game.h(充当游戏的控制器)

#include "Player.h"
#include "AIPlayer.h"
#include "HumanPlayer.h"
#include <memory>

class Game 
{
    public: 
        Game(unsigned int players)
        {
            if (players == 1)
            {
                player1.reset (new HumanPlayer()); 
                player2.reset (new AIPlayer());
            }
            else 
            {
                player1.reset (new HumanPlayer());
                player2.reset (new HumanPlayer());
            }
        }

        void playGame()
        {
            player1.makeAMove();
        }

    private:
        std::auto_ptr<Player> player1; // pointer to a Player object (C++11 has more secure unique_ptr)
        std::auto_ptr<Player> player2; // pointer to a Player object
};
Run Code Online (Sandbox Code Playgroud)

Player.h(HumanPlayer.h和AIPlayer.h的基类)

class Player …
Run Code Online (Sandbox Code Playgroud)

c++ auto-ptr

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

C++类的对象可以直接访问超类的公共变量

假设我有两个班:祖父,父亲.父亲延伸祖父.祖父有一个名为的公共int变量a.

如果我在main中创建一个父类的对象,该对象是否可以直接访问a祖父中的公共成员变量?

例如,我尝试了类似下面的内容,但编译器说这a是不可访问的.但既然a公众不应该直接从父亲的对象那里获得?

int main()
{
    Father father;

    cout << father.a;
}
Run Code Online (Sandbox Code Playgroud)

c++ inheritance

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

Visual Studio 2013 Ultimate项目加载失败

出于某种原因,当我尝试打开解决方案时,该项目称"加载失败".当我尝试重新加载项目时,我收到以下错误:

创建虚拟目录// localhost:xxxx /失败,并显示错误:无法访问IIS元数据库.您没有足够的权限访问计算机上的IIS网站.

我至少在三个不同的场合遇到此错误,每次我通过重新安装Visual Studio和.NET Framework 4.5.1来解决问题.但是,这次重新安装不起作用.以下是我已经尝试过的事情:

  • 重新安装Visual Studio和.NET Framework 4.5.1
  • 以管理员身份运行Visual Studio
  • 关闭和打开IIS功能

不幸的是,这些都没有奏效,我真的需要解决这个问题

欢迎任何建议!

谢谢.

c# visual-studio-2013

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

将字符串、列表的映射连接到不包括字符串的单个列表中

我有一个Map<String, List<MyObject> myMap。如何将所有 List 值连接到一个List<MyObject>(不包括 String 键)?

我尝试过这个

List<MyObject> list = new ArrayList<MyObject>(myMap.values())
Run Code Online (Sandbox Code Playgroud)

但这不适用于集合。

还考虑过迭代地图并将每个列表加入到新列表中,但希望有更好的方法。

java stream collectors

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

(C++)递归调用文件输入函数

我有用于输入文件并将内容存储在字符串中的函数.

这是代码

    std::string inputFile();

    int main()
    {
        std::string fileContents = inputFile();
    }

    std::string inputFile()
        {
            std::string fileName;
            std::cout << "\nEnter file name, including path:\n";
            std::getline(std::cin, fileName);

            std::ifstream input(fileName.c_str());
            std::string buffer;
            std::string result; 

            if (!input.fail()) // if input does not fail
            {
                while (!input.eof()) 
                {
                    std::getline(input, buffer); 
                    result.append(buffer); 
                }
                input.close();

                return result; 
            }
            else
            {
                std::cout << "\nInvalid file name or path";
                inputFile(); // recursive call to inputFile
            }
        }
Run Code Online (Sandbox Code Playgroud)

如果正确输入文件名和路径,它工作正常.

但是,如果输入的文件名或路径不正确,则会执行对inputFile的递归调用,并为用户提供另一个输入文件的机会.然后,如果正确输入文件名,则Visual Studio 2013中会引发错误:

"Assignment4.exe中0x77F7A9E8(msvcr120d.dll)的未处理异常:0xC0000005:访问冲突读取位置0xCCCCCCC0."

谢谢你的任何建议

c++ recursion file input

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

将两个列表与linq结合使用

我有两个清单:

    var myIds = new List<int>()
        {
            1, 2, 3
        };

    var yourIds = new List<int>()
        {
            2, 3, 4
        };
Run Code Online (Sandbox Code Playgroud)

我怎么能把这两个列表合二为一.新列表如下所示:

Id    Mine     Yours
---------------------
1      T         F
2      T         T
3      T         T
4      F         T
Run Code Online (Sandbox Code Playgroud)

两者都包含整数,仅在名称上有所不同.我想创建两个额外的列表,其中包含一个表示每个列表名称的属性,但我确信有更好的方法.

c# linq

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