小编Mic*_*ell的帖子

在容器类中使用自定义比较器的 C++ 排序集

我有一个有名字和年龄的类 Person 。

我有一个名为 people 的容器类,用于存储一组人员。

我创建了两个自定义比较器来按名称和年龄排序。

当我在我的类 (People) 中存储包含 Persons 的集合时,如何传入自定义比较器。

例如

我的比较器看起来像这样

struct compareByName
{
    bool operator()(const Person & Left, const Person & Right)
    {
        return (Left.getName() < Right.getName());
    }
};
Run Code Online (Sandbox Code Playgroud)

主要是如果我想按姓名对一组人进行排序,我只是这样做

set<Person, compareByName> peopleByName;
Run Code Online (Sandbox Code Playgroud)

或者我的年龄

set<Person, compareByAge> peopleByAge;
Run Code Online (Sandbox Code Playgroud)

我遇到麻烦的地方是如何在我的人员容器类中使用它我会有类似的东西

class People
{
private:
    set<Person, COMPARATOR> m_people;
}
Run Code Online (Sandbox Code Playgroud)

COMPARATOR 可以是名字或年龄

c++ sorting comparison set

5
推荐指数
1
解决办法
1990
查看次数

Bootstrap html使文本区域跨越表单中的多行

如何使用 bootstrap col 和 rows 使我的文本区域跨越表单中的多行。

这是我的意思的屏幕截图。

在此输入图像描述

我希望“注释”文本区域跨越两列,到达我以黄色突出显示的区域。

这是我到目前为止的代码

<form>

  <div class="form-row">
    <div class="form-group col-md-4">
      <label for="input-1">input 1</label>
      <input id="input-1" class="form-control full-width" type="text" name="input-1" placeholder="input-1">
    </div>

    <div class="form-group col-md-4">
      <label for="input-2">input 2</label>
      <input id="input-2" class="form-control full-width" type="text" name="input-2" placeholder="input-2">
    </div>

  </div>

  <div class="form-row">
    <div class="form-group col-md-4">
      <label for="input-3">input 3</label>
      <input id="input-3" class="form-control full-width" type="text" name="input-3" placeholder="input-3">
    </div>

    <div class="form-group col-md-4">
      <label for="input-4">input 4</label>
      <input id="input-4" class="form-control full-width" type="text" name="input-4" placeholder="input-4">
    </div>

  </div>

  <div class="form-group">
    <label for="text-content">Notes</label>
    <textarea class="form-control" id="text-content" rows="3"></textarea> …
Run Code Online (Sandbox Code Playgroud)

html css bootstrap-4

5
推荐指数
1
解决办法
5196
查看次数

使用 .get() 和 -&gt; 运算符有区别吗?

我正在学习 C++ 测试,其中一个问题如下:

std::unique_ptr<Rectangle> rec = std::make_unique<Rectangle>(0, 0, 15, 15);

// why must we use rec.get()->?
rec.get()->setWidth(30);
rec.get()->draw();
Run Code Online (Sandbox Code Playgroud)

我想知道为什么我们需要这里.get()?如果我省略了,这会是一样的吗.get(),如下所示:

rec->setWidth(30);
rec->draw();
Run Code Online (Sandbox Code Playgroud)

c++ pointers smart-pointers

5
推荐指数
1
解决办法
665
查看次数

解析文件时可以将 std::string_view 与 getline 一起使用吗?

我最近了解了 std::string_view 以及它如何比分配字符串快得多,因此我尝试在可能的情况下使用它来代替 std::string 。

有没有一种方法可以优化逐行解析文件的循环以使用 std::string_view 代替?

这是我正在处理的代码。

    std::string line;

    // loop until we find the cabbage tag
    while (std::getline(csd, line))
    {
        //DO STUFF
        if (line.find("</STOP>") != std::string::npos)
            break;
    }
Run Code Online (Sandbox Code Playgroud)

c++ string string-view c++17

5
推荐指数
1
解决办法
2704
查看次数

java线程开始不起作用

我有一个简单的练习,我试图涉及线程.

(a)创建一个名为SumAction的类,它实现了Runnable.该类包含3个实例变量 - start,end和sum.start和end由构造函数初始化.sum设置为0.

(b)run()方法应该有一个for循环,它应该从开始到结束找到所有值的总和.应该有一个方法getSum()来返回sum的值.

(c)在main中创建此Runnable类的2个实例,一个以1和10为参数,另一个为10和20.

(d)将这些实例传递给2个线程构造函数以生成线程t1和t2.

(e)线程完成后,调用getSum从两个线程中获取总和值以查找总计.

我很确定我做得对,但我仍然得到0的总和值.

这是我的课

public class SumAction implements Runnable {

private int start, end, sum;

public SumAction(int start, int end) {
    this.start = start;
    this.end = end;
    sum = 0;
}

@Override
public void run()
{

    for (int i = start+1; i < end; i++)
    {
      sum += i;  
    }

}

public int getSum() {
    return sum;
}
}
Run Code Online (Sandbox Code Playgroud)

这是主要的

    SumAction run1 = new SumAction(1, 10);

    SumAction run2 = new SumAction(10, 20);

    Thread t1= …
Run Code Online (Sandbox Code Playgroud)

java multithreading runnable

4
推荐指数
1
解决办法
850
查看次数

如何从 json 字符串中获取对象列表 c# Newtonsoft.json

我正在尝试将 JSON 字符串转换为对象列表,但出现错误

无法将当前 JSON 对象反序列化为 List 类型,因为该类型需要 JSON 数组才能正确反序列化。

我检索了 json,它看起来像这样

{
    "Code":0,
    "Message":"OK",
    "Data":
    {
        "Houses":
        [
            {
                "Id":1,
                "Name":"House 1",
                "Area":"22.00",
                "ShortName":"H1",
                "FarmName":"Farm 1"
            },
            {
                "Id":2,
                "Name":"Farmi1 - House 1",
                "Area":"1000.00",
                "ShortName":"H1",
                "FarmName":"Farm 1"
            }
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我说

List<House> Houses = JsonConvert.DeserializeObject<List<House>>(json); 
Run Code Online (Sandbox Code Playgroud)

c# json json.net

4
推荐指数
1
解决办法
1万
查看次数

sql从数据库中选择前10个值

我有一个叫做文章的表,每篇文章都有一个评级值.我想从评价最高的十篇文章中选择*.

沿着这些方向的东西

    $query = "SELECT TOP 10 rating FROM articles ORDER BY rating DESC";
Run Code Online (Sandbox Code Playgroud)

我对TOP 10部分感到困惑,我通常会选择SELECT*FROM

php mysql sql

2
推荐指数
1
解决办法
3757
查看次数

有没有办法在c++中通过名称动态调用函数

我有一个名为 so, void F1(), void F2().....的函数列表

我要求用户输入一个数字,它会调用相应的函数。所以如果他们输入5它就会调用F5().

我想知道是否有一种方法可以通过将用户输入附加到函数调用来做到这一点,而不是使用一个很长的 switch 语句。像下面的代码一样

std::cout << "Please enter the number of the function you wish to call " << std::endl;

std::cin >> choice;

functionToCall = "F" + choice;
Run Code Online (Sandbox Code Playgroud)

c++ function c++14

1
推荐指数
1
解决办法
1161
查看次数

使用HashMap Iterator

我有两种方法来遍历包含键(String)和值(Arraylist)的哈希映射,并将Arraylists中的所有值添加到单个Arraylist中.

方法一不起作用,所以我创建了方法二,修复了问题,但我不确定为什么方法一不起作用.有人可以解释为什么方法二有效,方法一无效?

方法1

public ArrayList<Person> getPeopleList() 
{
    Iterator<ArrayList<Person>> iter = people.values().iterator();

    ArrayList<Person> allPersons = new ArrayList<>();
    while (iter.hasNext()) 
    {
        for (int i = 0; i < iter.next().size(); i++) 
        {
            allPersons.add(iter.next().get(i));
        }

    }
    return allPersons;
}
Run Code Online (Sandbox Code Playgroud)

方法2

public ArrayList<Person> getPeopleList() 
{
    Iterator<ArrayList<Person>> iter = people.values().iterator();

    ArrayList<Person> allPersons = new ArrayList<>();

    ArrayList<Person> persons;
    while (iter.hasNext()) 
    {
        persons = iter.next();
        for (Person p : persons) 
        {
            allPersons.add(p);
        }

    }
    return allPersons;
}
Run Code Online (Sandbox Code Playgroud)

java iterator arraylist hashmap

0
推荐指数
1
解决办法
55
查看次数