这是我的代码:
#include <iostream>
#include <map>
using namespace std;
int main() {
map<int , int > myMap;
map<int , int>::iterator it;
myMap.insert(pair<int , int>(1,2));
myMap.insert(pair<int , int>(671,223));
myMap.insert(pair<int , int>(353,245352));
it = myMap.end() - 1;
cout << it->first << it->second << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编译此代码会产生以下编译错误:
error: no match for ‘operator-’ (operand types are ‘std::map<int, int>::iterator {aka std::_Rb_tree_iterator<std::pair<const int, int> >}’ and ‘int’)
it = myMap.end() - 1;
Run Code Online (Sandbox Code Playgroud)
我不知道为什么我会收到此错误,因为我认为所有类型的迭代器都允许算术运算.
我正在使用此查询来获取汇总结果:
select _bs, string_agg(_wbns, ',') from bag group by 1;
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
运行查询时出错:函数 string_agg(字符变化,“未知”)不存在提示:没有函数匹配给定的名称和参数类型。您可能需要添加显式类型转换。
我也试过 array_agg() 并得到同样的错误。
请帮助我找出可用于汇总结果的其他选项。
当我尝试使用 Xerces-c 验证 XML 时,我的应用程序有时会崩溃。
这是堆栈跟踪:
#0 0x000000000064ead0 in xercesc_3_2::XMLMutex::lock() ()
#1 0x000000000064eb32 in xercesc_3_2::XMLMutexLock::XMLMutexLock(xercesc_3_2::XMLMutex*) ()
#2 0x00000000005c8d5d in xercesc_3_2::XMLScanner::commonInit() ()
#3 0x00000000005c6ff7 in xercesc_3_2::XMLScanner::XMLScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#4 0x00000000006caf59 in xercesc_3_2::IGXMLScanner::IGXMLScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#5 0x00000000006858aa in xercesc_3_2::XMLScannerResolver::getDefaultScanner(xercesc_3_2::XMLValidator*, xercesc_3_2::GrammarResolver*, xercesc_3_2::MemoryManager*) ()
#6 0x00000000005da3f8 in xercesc_3_2::AbstractDOMParser::initialize() ()
#7 0x00000000005da163 in xercesc_3_2::AbstractDOMParser::AbstractDOMParser(xercesc_3_2::XMLValidator*, xercesc_3_2::MemoryManager*, xercesc_3_2::XMLGrammarPool*) ()
#8 0x00000000005e81bc in xercesc_3_2::XercesDOMParser::XercesDOMParser(xercesc_3_2::XMLValidator*, xercesc_3_2::MemoryManager*, xercesc_3_2::XMLGrammarPool*) ()
#9 0x00000000004f0323 in KEventUtils::validateXML(std::string) (this=0xdbb030, xmlFile="/mnt/lprsResults3//2017/09/18/C01/P00C013-2017091803862.xml.1.xml") at src/KEventUtils.cpp:315
#10 0x00000000004c3861 in ACSTrigger::transcodeVideo(int) (this=0xdbe170, id=0) at src/acsTrigger.cpp:1314
#11 0x00000000004cacaa in …Run Code Online (Sandbox Code Playgroud) 我是Java编程语言的新手.
我熟悉C和C++,但无法理解下面程序的行为.
public class Test {
static int x = 11;
private int y = 33;
public void method1(int x) {
Test t = new Test();
this.x = 22;
y = 44;
System.out.println("Test.x: " + Test.x);
System.out.println("t.x: " + t.x);
System.out.println("t.y: " + t.y);
System.out.println("y: " + y);
}
public static void main(String args[]) {
Test t = new Test();
t.method1(5);
}
}
Run Code Online (Sandbox Code Playgroud)
正确的输出:
Test.x: 22
t.x: 22
t.y: 33
y: 44
Run Code Online (Sandbox Code Playgroud)
预期产量:
Test.x: 22
t.x: 22
t.y: 44 // …Run Code Online (Sandbox Code Playgroud) 我有一个带有'|| o ||'的示例文件 作为字段分隔符.
www.google.org||o||srScSG2C5tg=||o||bngwq
farhansingla.it||o||4sQVj09gpls=||o||
ngascash||o||||o||
ms-bronze.com.br||o||||o||
Run Code Online (Sandbox Code Playgroud)
我想移动只有1个字段的行和有1 1.txt个以上字段的行not_1.txt.我使用以下命令:
sed 's/\(||o||\)\+$//g' sample.txt | awk -F '[|][|]o[|][|]' '{if (NF == 1) print > "1.txt"; else print > "not_1.txt" }'
Run Code Online (Sandbox Code Playgroud)
问题是它不是原始线而是移动线.
我得到的输出是(not_1.txt):
td@the-end.org||o||srScSG2C5tg=||o||bnm
erba01@tiscali.it||o||4sQVj09gpls=
Run Code Online (Sandbox Code Playgroud)
1.TXT:
ngas
ms-inside@bol.com.br
Run Code Online (Sandbox Code Playgroud)
如您所见,原始线条已被修改.我不想修改这些行.任何帮助将受到高度赞赏.
我正在阅读 elasticsearch-7.4 的概念,并且了解了两个领域。
_seq_no和_version。
根据文档:
版本
Returns a version for each search hit.
Run Code Online (Sandbox Code Playgroud)
序列号和主术语
Returns the sequence number and primary term of the last modification to each search hit.
Run Code Online (Sandbox Code Playgroud)
但它并没有清除与文档的不同或相同时间相关的任何内容。
我创建了一个索引 test
PUT /test/_doc/_mapping
{
"properties": {
"total_price" : {
"type": "integer"
},
"final_price": {
"type": "integer"
},
"base_price": {
"enabled": false
}
}
}
Run Code Online (Sandbox Code Playgroud)
我正在使用PUT API.
PUT /test/_doc/2
{
"total_price": 10,
"final_price": 10,
"base_price": 10
}
Run Code Online (Sandbox Code Playgroud)
无论_seq_no和_version正在增加在这种情况下。
在使用进行部分更新时UPDATE API,
POST …Run Code Online (Sandbox Code Playgroud) 下面是R使用双指针填充struct数组的示例代码.我无法分配内存r[0],并且还当函数退出,都r和r[0]变0x0.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
struct R
{
int x;
int y;
char * z;
};
void func(struct R **r)
{
r = (struct R **) malloc(4 * sizeof(struct R *));
r[0] = (struct R *) malloc(sizeof(struct R)); // giving r[0] = 0x0
r[0]->x = 1;
r[0]->y = 2;
r[0]->z = (char *) malloc(64 * sizeof(char));
strcpy(r[0]->z , "HELLO");
}
int main()
{
struct R *r = NULL; …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的json对象列表:
test = [{"a": 1, "b": 2, "c": 3}, {"a": 4, "b": 5, "c":6}]
Run Code Online (Sandbox Code Playgroud)
我想获取字段'a'并'c'从上面的测试列表中创建类似这样的列表列表:
[[1, 4], [3, 6]]
Run Code Online (Sandbox Code Playgroud)
这个想法是列出a的所有值,然后列出c的值。
当我使用拨动时:
test.pluck(:a, :c)
Run Code Online (Sandbox Code Playgroud)
我得到这样的输出:
[[1, 3], [4, 6]]
Run Code Online (Sandbox Code Playgroud)
我尝试过的一种方法效果很好。
res = []
res << test.pluck(:a)
res << test.pluck(:c)
Run Code Online (Sandbox Code Playgroud)
但是我认为如果有一个或两个衬垫解决方案(
有或没有)会更好,
inbuilt function因为将来的油田数量可能会增加。
我创建了一个简单的C++程序来测试C++向量中erase()的行为.
这是我的代码:
#include <iostream>
#include <vector>
using namespace std;
int main() {
// your code goes here
vector<int> vec;
vec.push_back(3);
vec.push_back(4);
vec.push_back(5);
cout << vec[0] << " " << vec[1] << " " << vec[2] << endl;
vec.erase(vec.end());
//vec.erase(vec.begin());
cout << vec.size() << endl;
vec.push_back(12);
vec.push_back(10);
cout << vec[0] << " " << vec[1] << " " << vec[2] << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是上面的代码在尝试擦除向量中的最后一个元素时给出了分段错误.但是当我使用begin()擦除第一个元素时,它工作正常.我无法理解它背后的原因.任何帮助将受到高度赞赏.
我想'd'在 C++ 中打印为字符串。
string s = to_string((char)('a'+ 3));
cout << s << endl;
Run Code Online (Sandbox Code Playgroud)
预期输出: "d"
实际输出: "100"
我无法理解这种行为。任何帮助将不胜感激。