我有以下数据:
FolioA Name1 100
FolioA Name2 110
FolioA Name3 100
FolioB Name1 100
FolioB Name3 106
FolioC Name1 108
FolioC Name2 102
FolioC Name3 110
Run Code Online (Sandbox Code Playgroud)
我想只插入唯一的名称(即Name1,Name2和Name3,每一次)
std::vector<std::string> name;
Run Code Online (Sandbox Code Playgroud)
当我遍历数据时.
所以,我有以下代码,我将数据存储在名为test的地图中:
std::map<std::string, std::map<std::string, double> >test;
std::map<std::string, std::map<std::string, double > >::iterator it1 = test.begin(), end1 = test.end();
while (it1 !=end1) {
std::map<std::string, double>::iterator it2 = it1->second.begin(), end2=it1->second.end();
**name.push_back(it2->first);**
++it2;
}
++it1;
}
Run Code Online (Sandbox Code Playgroud)
但是,目前通过按照我的方式将数据推送到名称的名称为Name1的2个实例,Name2的2个实例和Name3的3个实例,这是我的代码所期望的.如何修复它只有唯一的名称.
我有一个xts对象,第一列是日期时间,然后是OHLC.当我输入
>test
Run Code Online (Sandbox Code Playgroud)
它打印正确的输出如下:
2010-09-08 15:13:00 115 115 110 115
2010-09-08 15:14:00 120 125 115 125
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试write.csv(test,"test.csv")时,它只写OHLC - 为什么.我用什么命令来写日期时间
这就是str(test)的样子:
An ‘xts’ object from 2010-06-30 15:47:00 to 2010-09-08 15:14:00 containing:
Data: num [1:21757, 1:4] 215 220 205 195 185 ...
- attr(*, "dimnames")=List of 2
..$ : NULL
..$ : chr [1:4] "y.Open" "y.High" "y.Low" "y.Close"
Indexed by objects of class: [POSIXlt,POSIXt] TZ:
xts Attributes:
NULL
Run Code Online (Sandbox Code Playgroud) 我试图将矢量数据复制sample到Y如下
std::map<std::string, std::vector<double > >sample;
std::map<std::string, std::vector<double > >::iterator it1=sample.begin(), end1=sample.end();
std::vector<double> Y;
Run Code Online (Sandbox Code Playgroud)
并使用以下代码:
while (it1 != end1) {
std::copy(it1->second.begin(), it1->second.end(), std::ostream_iterator<double>(std::cout, " "));
++it1;
}
Run Code Online (Sandbox Code Playgroud)
它打印输出ok,但是当我用下面的代替上面的std :: copy块时,我得到一个段错误.
while (it1 != end1) {
std::copy(it1->second.begin(), it1->second.end(), Y.end());
++it1;
}
Run Code Online (Sandbox Code Playgroud)
我只想将it1-> second的内容复制到Y.为什么它不起作用,我该如何解决?
我已声明以下枚举:
enum periods {one, five, ten, fifteen, thirty};
Run Code Online (Sandbox Code Playgroud)
现在我想在主函数中将它作为命令行参数传递.
int main(int argc, char* argv[]) {
periods mp;
if (argc == 2) {
std::string min_prd(argv[2]);
mp=atoi(min_prd.c_str());
}
Run Code Online (Sandbox Code Playgroud)
并且编译器抱怨:
error: invalid conversion from ‘int’ to ‘periods’
Run Code Online (Sandbox Code Playgroud)
我做了atoi(),因为我认为枚举是一个int - 如何修复我的代码?
我之前没有使用过valgrind,但我需要用它来检查内存泄漏.我运行了以下命令:
G_SLICE=always-malloc G_DEBUG=gc-friendly valgrind -v --tool=memcheck --leak-check=full --num-callers=40 --log-file=valgrind.log example1
valgrind: example1: command not found
Run Code Online (Sandbox Code Playgroud)
我按照本网站的说明进行操作:http: //www.cprogramming.com/debugging/valgrind.html
这就是example1文件的样子:
#include <stdlib.h>
int main()
{
char *x = malloc(100); /* or, in C++, "char *x = new char[100] */
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我知道valgrind安装在我的机器上,无论我运行以下命令以确保:
sudo apt-get install valgrind
Run Code Online (Sandbox Code Playgroud)
有人可以.指导我如何让valgrind工作.... thx!
我有以下功能:
std::vector<double>residuals;
std::cout << Print_res(std::cout);
std::ostream& Print_res(std::ostream& os) const {
os << "\tresidual" << std::endl;
for (unsigned int i = 0 ; i < 22 ; i++) {
os << "\t\t" << residuals[i] << std::endl;
}
os << std::flush;
return os;
};
Run Code Online (Sandbox Code Playgroud)
它正确打印残差,但在输出的末尾标记一个地址,如下所示:
2275
2279.08
2224.0835
0x80c5604
Run Code Online (Sandbox Code Playgroud)
我该如何解决?编辑:阅读大家的意见后,我更换了调用该函数Print_res与std::copy作为
std::copy(residuals.begin(), residuals.end(), std::ostream_iterator<double>(std::cout,"\n"));
Run Code Online (Sandbox Code Playgroud)
并且没有打印地址,所以我认为我编写函数的方式有问题.
如何将下面的Java代码转换为C++.我知道我可以写
typedef unsigned char byte,这样的照顾,但我不明白的|=和<<=都是为了.如何取代final
public static final long unsignedIntToLong(byte[] b) {
long l = 0;
l |= b[0] & 0xFF;
l <<= 8;
(l >>> 4) & 0x0F;
Run Code Online (Sandbox Code Playgroud)
我如何在C++中测试所有这些 - 我可以在进行转换时运行一些单元测试.
我使用以下代码来查找curr_symbol并将其替换为new_symbol.即使我在代码中指定它应该在特定的行号中这样做,它将查找和替换应用于所选表中的所有行,这不是我想要的.
Sub find_replace()
Dim curr_symbol, new_symbol As String
Dim row_num, last_row As Integer
row_num = ActiveSheet.Cells(1, "A").Value 'row_num=9
last_row = ActiveSheet.Cells(2, "A").Value 'last_row=11
Do While row_num < last_row
curr_symbol = ".ABC130301"
new_symbol = ActiveSheet.Cells(row_num, "E").Value 'new_symbol=".BAC130306"
With ActiveSheet.UsedRange
.Replace curr_symbol, new_symbol, xlPart
End With
row_num = row_num + 1
Loop
End Sub
Run Code Online (Sandbox Code Playgroud)
我甚至尝试用With ActiveSheet.UsedRange....End With以下语句替换,但这也替换了所有行中的curr_symbol.
ActiveSheet.Cells.Replace What:=curr_symbol, Replacement:=new_symbol, LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, _
SearchFormat:=False, ReplaceFormat:=False
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题,以便它只替换指定行中的字符串.