我想在c ++中有一个for循环,它在初始化中构造了两种不同类型的向量迭代器.
这是我想要的大致想法:
std::vector<double> dubVec;
std::vector<int> intVec;
double result = 0;
dubVec.push_back(3.14);
intVec.push_back(1);
typedef std::vector<int>::iterator intIter;
typedef std::vector<double>::iterator dubIter;
for (intIter i = intVec.begin(), dubIter j = dubVec.begin(); i != intVec.end(); ++i, ++j)
{
result += (*i) * (*j);
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道在这种情况下要做的标准是什么?我不能只为intVec使用double的向量,因为我正在寻找一个通用的解决方案.[即我可能有一些函数f,它将int加倍,然后计算f(*i)*(*j)]
我正在使用Boost Python来包装我创建的一些C++函数.我的一个C++函数包含22个参数.当我尝试用这个函数编译我的解决方案时Boost抱怨,我试图弄清楚它是否只是因为这个函数有太多的参数.
有谁知道这样的限制是否存在?我已经复制了我在下面的错误,而不是代码,因为我认为某人要么知道答案还是没有 - 如果没有限制,那么我只是试着弄清楚自己.首先十分感谢!
这是我收到的错误消息开头的副本...
1>main.cpp
1>c:\cpp_ext\boost\boost_1_47\boost\python\make_function.hpp(76): error C2780: 'boost::mpl::vector17<RT,most_derived<Target,ClassT>::type&,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile const,Target *)' : expects 2 arguments - 1 provided
1>c:\cpp_ext\boost\boost_1_47\boost\python\signature.hpp(236) : see declaration of 'boost::python::detail::get_signature'
Run Code Online (Sandbox Code Playgroud)
最终我得到了大约一百个与此类似的错误消息:
1>c:\cpp_ext\boost\boost_1_47\boost\python\make_function.hpp(76): error C2784: 'boost::mpl::vector17<RT,ClassT&,T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14> boost::python::detail::get_signature(RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile const)' : could not deduce template argument for 'RT (__thiscall ClassT::* )(T0,T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12,T13,T14) volatile const' from 'std::string (__cdecl *)(const std::string &,jal::date::JULIAN_DATE,const std::string &,const std::string &,int,const std::string &,const std::string &,const std::string &,const std::string &,const std::string &,const std::string &,int,const std::string &,const std::string …Run Code Online (Sandbox Code Playgroud) 我有一个类,并且该类的输入的一部分是可变长度的向量(称为数据)(假设它具有长度N).我在功能后包含了这个:
N = data_->size();
Run Code Online (Sandbox Code Playgroud)
在类的私有部分,我想声明一个数组double A[N][N];.但是,当我尝试这样做时,我会说些什么
错误:"N不是类型名称,静态或枚举器".
如何创建阵列A[N][N]?
对不起,如果已经在其他地方解释过,因为我对c ++很新,所以甚至不知道该找什么!
编辑 - 附加代码:
class foo {
public:
foo (std::vector &data)
: data(data_)
{
N = data_->size();
M = /* four times the last member of data (which is a vector of positive integers)*/
}
private:
double A[M][M];
void foo(void)
{
for (std::size_t i=1; i<=M; ++i)
{
A[i][i] = 1;
}
}
};
Run Code Online (Sandbox Code Playgroud)
希望有某种意义......我怎么能定义A [M] [M]?也许它不可能为M做,因为M是数据的函数.如果M不可能,N可能吗?
我能想到的一个可能性是,我可以制作A a std::vector< std::vector<double> > A然后将很多0或其他东西压入其中,然后修改值......
我正在尝试使用VBA编写此公式:
ActiveCell.Value = "=f(R[-1]C[0],Sheet1!" & ColumnLetter & i & ")"
Run Code Online (Sandbox Code Playgroud)
其中ColumnLetter是我的宏之前计算的一些变量字母,而f是某个函数,而我是一些数字.
问题是,当我运行它时,相反给出了单元格:(如果ColumnLetter = F,i = 16):
=f(R[-1]C[0],Sheet1!'F16')
Run Code Online (Sandbox Code Playgroud)
但我想要:
=f(R[-1]C[0],Sheet1!F16)
Run Code Online (Sandbox Code Playgroud)
为什么VBA或Excel会在F16附近放置这些单引号?如果我在公式中不包含R [-1] [0]作为参数,它不会插入这些额外的引号,但我需要包含它.
非常感谢!
我有一个硬编码到我的程序中的目录列表:
import os
my_dirs = ["C:\a\foo"
,"C:\b\foo"
,"C:\c\foo"
,"C:\t\foo"
]
Run Code Online (Sandbox Code Playgroud)
我后来想要执行一些操作os.path.isfile(my_dirs[3]).但是字符串my_dirs [3]变得搞砸了,因为它"\t"是tab或者其他东西的缩写.
我知道解决这个问题的方法是使用它:
my_dirs = ["C:\\a\\foo"
,"C:\\b\\foo"
,"C:\\c\\foo"
,"C:\\t\\foo"
]
Run Code Online (Sandbox Code Playgroud)
另一个解决方案是使用正斜杠.
但我喜欢能够直接从资源管理器复制目录到我的Python代码.有什么方法可以告诉Python不要"\t"变成选项卡或其他解决方案来解决我的问题?
鉴于其简单的描述,我发现很难找到答案.我希望这不是重复,虽然它可能是因为它简单,我根本找不到答案.
在VBA中,我有数百列,我想知道它们的全部内容.我知道确实有"COLS"专栏.我想要这样的东西:
For i in COLS
length = 'Some one line formula to find the length of column i
'Some code that works with the value of length
Next i
Run Code Online (Sandbox Code Playgroud)
按长度我的意思是非空单元格的数量......对于我的特定目的,列中没有空白单元格,我想要计数的列中的所有单元格都将包含文本(其余所有单元格都将为空) .
在这个看似简单的问题上,我们将非常感谢帮助!
编辑:我也想让它依赖于列索引(在上面的循环中将是'i').我不会总是知道专栏信......
我已经创建了一个Excel加载项,并且这个加载项的功能之一,可以说New_Years当前需要2年时间,并在Excel中作为数组输出这两年之间的每个新年.所以New_Years(2000,2002)将返回2000年1月1日,2001年1月1日和2002年1月1日的最后一个单元格.
问题是我必须知道那时候会有3个日期,选择3个单元格,在顶部单元格中输入我的公式,然后点击Ctrl + Shift + Enter以填充数组.
我使用XLW版本5将我的C++代码转换为.xll文件.我真的很喜欢它,如果有一些方法我可以用我的公式填充一个正方形,Excel将根据需要填写下面的正方形和适当的日期.任何人都知道这是否可行?还是不可能?
非常感谢!
对不起,这可能是一个非常基本的Excel VBA问题.我刚刚开始学习它,而且我没有找到很好的教程.实际上,我根本找不到关于语言的有组织的信息.
我有一些名为"Sheet1"和"Sheet2"的工作表.
Sheet1的第一列和第二列包含一些数字.
我想编写一个宏来打印函数的结果,该函数将2个变量(从A列和B列各一个)传递给Sheet2.但我想在新工作表中将这些结果分开,以便Sheet1中Column'i'上的函数结果放入第1行和第4列*i.这是我到目前为止尝试做的,但它没有奏效,因为我不知道如何正确引用其他工作表中的特定单元格.
抱歉这是一个非常新的问题,非常感谢任何帮助!
Sub results()
Dim i As Integer, noValues As Integer
noValues = Application.CountA(Range("A:A"))
Sheets("Sheet2").Select
Range("A1").Select
For i = 1 To noValues
Range("A1").Offset(0, 4 * (i - 1)).Select
ActiveCell.FormulaR1C1 = "=Sheet1!A[i] + Sheet1!B[i]"
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)
其中A [i]和B [i]应表示A列或B列中的值,即行i.