我有两个清单:
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,该怎么办?我怎么能处理空列表?
我是Matlab的新手,但我对编程知之甚少.
对于类,我们已经被要求生成一个矩阵,该矩阵给出了n> = 4的二维n边形状的顶点.然后,生成矢量以连接顶点.我们还给出了一个提示:通过将从原点绘制的矢量添加到两个相邻顶点中的每一个,可以找到每个线段的矢量.
我知道如何使用A = [1 1创建矩阵; 1 2; 2 2; 2 1]但我不确定如何绘制给定此矩阵或任何其他矩阵的向量.
plot()函数看起来很有希望,但我不确定如何将它与矩阵一起使用.
谢谢你的任何建议.
顺便说一下,我正在使用Matlab 2011a
对于一个课程项目,我正在创建一个带有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) 由于某种原因,以下代码在 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) 我正在开发一个面向对象的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) 在我的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) 假设我有两个班:祖父,父亲.父亲延伸祖父.祖父有一个名为的公共int变量a.
如果我在main中创建一个父类的对象,该对象是否可以直接访问a祖父中的公共成员变量?
例如,我尝试了类似下面的内容,但编译器说这a是不可访问的.但既然a公众不应该直接从父亲的对象那里获得?
int main()
{
Father father;
cout << father.a;
}
Run Code Online (Sandbox Code Playgroud) 出于某种原因,当我尝试打开解决方案时,该项目称"加载失败".当我尝试重新加载项目时,我收到以下错误:
创建虚拟目录// localhost:xxxx /失败,并显示错误:无法访问IIS元数据库.您没有足够的权限访问计算机上的IIS网站.
我至少在三个不同的场合遇到此错误,每次我通过重新安装Visual Studio和.NET Framework 4.5.1来解决问题.但是,这次重新安装不起作用.以下是我已经尝试过的事情:
不幸的是,这些都没有奏效,我真的需要解决这个问题
欢迎任何建议!
谢谢.
我有一个Map<String, List<MyObject> myMap。如何将所有 List 值连接到一个List<MyObject>(不包括 String 键)?
我尝试过这个
List<MyObject> list = new ArrayList<MyObject>(myMap.values())
Run Code Online (Sandbox Code Playgroud)
但这不适用于集合。
还考虑过迭代地图并将每个列表加入到新列表中,但希望有更好的方法。
我有用于输入文件并将内容存储在字符串中的函数.
这是代码
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."
谢谢你的任何建议
我有两个清单:
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)
两者都包含整数,仅在名称上有所不同.我想创建两个额外的列表,其中包含一个表示每个列表名称的属性,但我确信有更好的方法.