我正在尝试创建一个将返回std :: vector的类方法,并且对于执行此操作的最佳方法有点困惑.
我使用的方法是定义以下方法:
std::vector<double>* GetBins(void);
Run Code Online (Sandbox Code Playgroud)
并在该方法中,分配一个新的std :: vector,我用数据填充.我正在返回指向这个的指针ie.
std::vector<double>* Frequency::GetBins(void) {
std::vector<double> *rtnVec = new std::vector<double>();
for (_itMap = _mapFreq.begin(); _itMap != _mapFreq.end(); _itMap++ ) {
rtnVec->push_back((*_itMap).first);
}
return rtnVec;
}
Run Code Online (Sandbox Code Playgroud)
(_itMap是类定义的迭代器).
在我的main.cpp中,我做了以下事情:
std::vector<double>* myBins;
myBins = myFreq3->GetBins();
delete myBins;
Run Code Online (Sandbox Code Playgroud)
我知道使用这种方法,除非我删除main.cpp代码中的指针,否则我将得到一个悬空指针,因此它已经有点"危险"了.从类方法返回一个新的std :: vector的最佳方法是什么?
谢谢你们Pete
更多的是自定义和练习题,但它是否被认为是不好的形式,或者是高度不可取的(选择你对不良的解释),在一个程序中混合使用Qt库类型和类似的标准C++类型?
例如,坚持使用ONLY QStrings进行字符串使用是非常明智的,还是人们经常在源文件中混合使用QString和std :: string类型?
我继承了一些代码,包括在一个文件中使用QString和std :: string,我想知道是否要将所有内容转换为其中一个.
我有一个与ant一起使用的build.xml,我正在尝试在目标中放置一个条件:
首先,我在这里设置属性工作正常:
<condition property="isWindows">
<os family="windows"/>
</condition>
Run Code Online (Sandbox Code Playgroud)
然后我尝试在目标中使用它:
<target name="-post-jar">
<condition property="isWindows" value="true">
<!-- set this property, only if isWindows set -->
<property name="launch4j.dir" location="launch4j" />
</condition>
<!-- Continue doing things, regardless of property -->
<move file="${dist.jar.dir}" tofile="myFile"/>
<!-- etc -->
</target>
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:"条件不支持嵌套的"property"元素." 问题是:如何正确地将条件放入目标中,为什么错误引用了'嵌套'属性?
我使用VSTO模板(VS2010,Excel2007)创建了一个Excel Addin.在解决方案资源管理器中,我有一个名为Excel的组,在其下面有一个名为ExcelAddIn.cs的文件.这可以通过代码访问活动工作表
public partial class MyAddIn
{
Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
Excel.Range firstRow = activeWorksheet.get_Range("A1",missing);
}
Run Code Online (Sandbox Code Playgroud)
此代码工作正常,即.我可以使用Excel模型.
但是,我不想将所有处理代码放在这个类文件中,而是希望在另一个类文件中处理Excel工作表数据.我已创建此文件,但无法使用上面的任何代码,即.我似乎无法从此文件访问Excel模型.我复制了'使用Microsoft.Office.Tools.Excel'引用,但是放入一行如下:
Excel.Worksheet activeWorksheet = (Excel.Worksheet)Application.Activesheet;
Run Code Online (Sandbox Code Playgroud)
给我一个'名称'应用程序'在当前上下文中不存在'错误.
关于从这个单独的类文件中获取Excel模型需要做什么参考/更改的任何想法?
顺便说一句.有效的文件是指第一个代码行的'Excel.Application'对象,第二个不起作用的单独文件是指'Microsoft.Office.Interop.Excel'对象.
谢谢皮特
====找到答案====从您添加的其他课程中获取工作表的方法是简单地访问
Globals.ThisAddIn.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)
例如:
Excel.Worksheet ws = (Excel.Worksheet)Globals.ThisAddin.Application.ActiveSheet;
Run Code Online (Sandbox Code Playgroud)
其中'ThisAddIn'是您的向导创建的类的名称(您可能已将其重命名).
因此,使用Globals来获取ThisAddin代码之外的Excel对象.
我需要在平面文件读取循环中跟踪最近7天的工作时间.它被用来衡量工作名单的"疲劳性".
现在我有一些有用的东西,但它似乎相当冗长,我不确定是否有一种更简洁的模式.
目前,我有一个带有静态数组的Java类来保存最后x天的数据,然后当我读完文件时,我切掉第一个元素并将另外6个元素(一周滚动总数)移回一个.该静态数组的处理以其自己的方法完成,即.
/**
* Generic rolling average/total method. Keeps adding to an array of
* last 'x' seen.
* @param d Datum point you want to add/track.
* @param i Number of rolling periods to keep track of eg. 7 = last 7 days
* NOT USED AT MOMENT DURING TESTING
* @param initFlag A flag to initialize static data set back to empty.
* @return The rolling total for i periods.
*/
private double rollingTotal(double d, boolean initFlag) …Run Code Online (Sandbox Code Playgroud) 我正在尝试理解在C#中使用yield关键字,因为我正在使用的队列建模包广泛使用它.
为了演示yield的用法,我正在使用以下代码:
using System;
using System.Collections.Generic;
public class YieldTest
{
static void Main()
{
foreach (int value in ComputePower(2, 5))
{
Console.Write(value);
Console.Write(" ");
}
Console.WriteLine();
}
/**
* Returns an IEnumerable iterator of ints
* suitable for use in a foreach statement
*/
public static IEnumerable<int> ComputePower(int number, int exponent)
{
Console.Write ("Arguments to ComputePower are number: " + number + " exponent: " + exponent + "\n");
int exponentNum = 0;
int numberResult = 1;
while (exponentNum < …Run Code Online (Sandbox Code Playgroud) 有没有办法在已有现有数据库时自动创建models.py模型定义?我有一个复杂的数据库,其中已经在MySQL中设置了表和关系,并且如果可能的话,我们希望避免从头开始创建models.py文件.
这可能是普通C++用户的基本问题.在功能上,我有一个ECG监视器,并希望选择在运行时使用哪种输出格式.我已经设置了两个暴露相同方法和成员的类(例如,ECGRecordingDefaultFormat和ECGRecordingEDFFormat). - > InsertMeasure, - > setFrequency, - > setPatientName等.
我知道我可以定义每个格式类类型的一个实例,然后输入:
if (ECGFormatToUse == ECGFormat.EDF) {
ecgDefaultFormat.InsertMeasure(x);
}
if (ECGFormatToUse == ECGFormat.Default) {
ecgEDFFormat.InsertMeasure(x);
}
Run Code Online (Sandbox Code Playgroud)
整个代码都是如此,但我想我可能不会完全使用C++的动态类型.
问题是:我可以在main()中定义一个变量,并在运行时选择我想要的格式后,让代码使用正确的类及其公开的'InsertMeasure'方法,避免在整个过程中使用大量的if/else码?
我很高兴只能参考我应该使用的继承/多态(?)的哪个方面,并且可以将其余部分谷歌.
多谢你们.
皮特
有人可以使用boost的正态分布告诉我这段代码发生了什么吗?
boost::mt19937 rng; // A random number generator
boost::normal_distribution<> nd(3.0, 1.0); // mean 3, sigma 1
// Attach the distribution to the random number generator to get a function
// that returns normally distributed variables.
boost::variate_generator<boost::mt19937&,boost::normal_distribution<> > var_nor(rng, nd);
// Use it. But why is function signature different?
double x = var_nor();
Run Code Online (Sandbox Code Playgroud)
我对var_nor及其两个函数签名发生了什么感到困惑.谢谢皮特
使用我发现的SO上的示例代码,以及我正在搜索的字符串,我正在尝试捕获一组飞机类及其座位.输入文件具有J28W36Y156形式的飞机配置,这意味着28个J(商务)级座位,36 W(高级经济舱座位)和156个Y(经济舱)座位.
我正在使用的Java代码如下:
s = "J12W28Y156";
patternStr = "(\\w\\d+)+";
p = Pattern.compile(patternStr);
m = p.matcher(s);
if (m.find()) {
int count = m.groupCount();
System.out.println("group count is "+count);
for(int i=1;i<=count;i++){
System.out.println(m.group(i));
}
}
Run Code Online (Sandbox Code Playgroud)
正则表达式似乎只捕获LAST类座位配置即.Y156.如何获得此正则表达式以捕获多个组中的所有类/席位组合.这是否与我需要指定的"贪婪"匹配有关?我想输出就像一个数组,例如.
{J12,W28,Y156}
多谢你们.
我只想重写代码,以减少类中执行相同操作但可以写入文件或控制台的方法的数量,因此我可以执行以下操作:
PrintFlightSchedule(String aFileName); // prints to a file
PrintFlightSchedule(); // writes to console.
Run Code Online (Sandbox Code Playgroud)
我试图通过定义抽象OutputStream,然后将其实例化为PrintStream或控制台(通过System.out)来创建以下测试方法,以演示我的目标:
public static void testOutputStream(String fileNm, String msg) {
OutputStream os;
if (fileNm.equals("") ) { // No file name provided, write to console
os = System.out;
}
// File name provided, write to this file name
else {
try {
os = new FileOutputStream(fileNm);
}
catch (FileNotFoundException fe) {
System.out.println("File not found " + fe.toString());
}
}
// Use the output stream here - ideally println method? …Run Code Online (Sandbox Code Playgroud) 一个简单的问题 - 可能是风格.当不再需要向量时,是否需要清除/清空向量,或者当不再需要容器时,您可以简单地依靠STL来清理向量.
我在这种情况下谈论的是不包含指针或其他需要删除的对象的基本向量,例如.
std::vector<double> myVector;
// use it
// finished with it
// use clear?
myVector.clear();
Run Code Online (Sandbox Code Playgroud) 我正在尝试在C++程序中使用getopt来解析命令行参数.参数是-d xxx,-s xxx和 - ?.我无法捕获 - ?参数,我想打印标准用法消息.
while ((c = getopt (argc, argv, "?d:s:")) != -1) {
switch (c) {
case 'd':
...do stuff
break;
case 's':
... do stuff
break;
case '?':
// From example on GNU page, seems to capture -d, -s when no args provided.
// Gets here when -d or -s provided, but no arguments for these options.
default:
// shut down
}
Run Code Online (Sandbox Code Playgroud)
尽我所能,我似乎无法抓住' - ?' 选项本身.是否有一个特殊的技巧来捕捉'?' 在其自己的?我是否为getopt提供了正确的模式(即'?d:s:')目前,c被设置为'?' 无论何时提供无效选项,即使'?' 在命令行中未提供.
多谢你们.