- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一个包含 Tour 对象的 vector ,我想将它们打乱顺序。幸运的是,有一个函数 random_shuffle()
。我打印了洗牌前后的对象,但是,对象的一个字段根本没有洗牌。
首先想到的是复制或移动构造函数不正确。在两个构造函数中使用 cout 后,我发现使用了移动构造函数。奇怪的是,构造函数对我来说似乎是正确的。
代码和移动构造函数如下。回想一下,洗牌后只有一个字段不正确,即d_penalty
。谁能帮我解决这个错误?
std::vector<Tour> tours;
// Fill vector with 4 tour objects
std::cout << "Print vector\n";
for (Tour const &tour: tours)
std::cout << tour << std::endl;
std::cout << "Shuffle\n";
std::random_shuffle(tours.begin(), tours.end());
std::cout << "Print vector\n";
for (Tour const &tour: tours)
std::cout << tour << std::endl;
移动构造函数定义如下,
#include "tour.ih"
/**
* Move constructor
*/
Tour::Tour(Tour &&other)
:
d_capacity(other.d_capacity),
d_demand(other.d_demand),
d_feasible(other.d_feasible),
d_length(other.d_length),
d_time(other.d_time),
d_penalty(other.d_penalty),
d_tour(std::move(other.d_tour))
{
cout << "Tour moved\n";
}
类定义如下,
class Tour
{
// Current information about the tour
int d_capacity; // Remaining capacity of the truck
int d_demand; // Total demand of all customers in the tour
bool d_feasible; // Is the tour feasible in capacity
double d_length; // Length of the current tour
double d_time; // Driving time plus serving time
double d_penalty; // The penalty for infeasibility
// The tour itself
std::vector<City const *> d_tour;
public:
// Other functions
private:
// More functions
};
最佳答案
std::random_shuffle
交换元素。默认交换,由 std::swap
实现,同时使用移动构造和移动赋值。
如果您没有移动赋值运算符,则将使用复制赋值运算符。由于您的移动构造函数确实处理了 d_penalty
正确,听起来您的复制赋值运算符未正确实现。
一般来说,可以受益于移动语义的类应该同时具有移动构造函数和移动赋值运算符。在可能的情况下,特殊成员函数应定义为 = default;
.
此外,std::random_shuffle
在 C++14 中弃用并在 C++17 中移除;你应该使用 std::shuffle
和 <random>
中的 URNG标题如 std::mt19937
.
关于c++ - random_shuffle 修改打乱后的对象 (c++11),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30664398/
我正在使用下面的随机播放脚本来随机化网站上某些 div 的顺序。 http://james.padolsey.com/javascript/shuffling-the-dom/ 该脚本有效,但仅随机化
我想打乱 HashMap 中的值。我有以下类型的 HashMap Map > trainDataSet = new HashMap>(); 我想打乱 map 中的值。我该怎么做呢? 以下是我的尝试:
这个问题已经有答案了: Shuffle a list of integers with Java 8 Streams API (8 个回答) 已关闭 3 年前。 我有一个单词列表:List words
我必须使用 SQL SELECT 语句返回一些结果。我需要返回两条关于员工的信息,Employee# 和 EmployeeName。 我试过了 SELECT Employee#, EmployeeNa
我有一个网页,我正在尝试打印它。我正在使用引导导航栏。问题是,当我使用 bootstarp 导航栏时,打印预览没有任何意义。我在页面中看到了代码行而不是实际内容。只有当我将引用添加到 bootstra
我用 16 位值加载两个 SSE 128 位寄存器。这些值按以下顺序排列: src[0] = [E_3, O_3, E_2, O_2, E_1, O_1, E_0, O_0] src[1] = [E_
我需要做的是:原始状态: 洗牌后: 第一个 div 中的 Divs 留在那里但会被打乱,同样的情况也会发生在具有相同类的第二个 div 中。要在特定的 div
我有一个列表: milk butter eggs orange juice bananas 如何使用 javascript 随机重新排序列表项? 最佳答案
我有一个大小为 n 的 NSMutableArray urlArray,我想从数组中的元素总数中随机选择其中的 4 个 URL。 但是我不想直接打乱 urlArray,我更喜欢制作一个“indexAr
关闭。这个问题需要多问focused 。目前不接受答案。 想要改进此问题吗?更新问题,使其仅关注一个问题 editing this post . 已关闭 5 年前。 Improve this ques
首先,我的母语不是英语,所以请原谅我的一些错误。 我想对 ArrayList 进行洗牌(没问题),但是洗牌后列表必须满足某些条件。我的第一个方法是创建 if 语句,并在每次为 true 时进行洗牌。但
我想打乱 __m256i vector 的元素。并且有一个内在的 _mm256_shuffle_epi8 做类似的事情,但它不执行跨车道洗牌。 如何使用 AVX2 指令来实现? 最佳答案 有一种方法可
有谁知道改变现有 NSString 或 NSMutableString 字符顺序的现有方法吗?无论如何,我有一个解决方法,但如果有一个现有的方法,那就太好了。 例如,给定字符串@"HORSE",一个方
我是 Objective-C 新手,通过反复试验来学习!如果这个问题有点幼稚,请原谅我。 我创建了一组图像,需要对它们进行随机播放。我已经使用了这里给出的建议: What's the Best Way
我们有一个网络应用程序,希望向潜在客户演示,但我们最好的方法是使用现有数据,以获得完整的体验。当然,我们不想使用应用程序中可见的实际客户名称或地址等来执行此操作。 SQL Server 中有没有一种简
有一个简单的方法来缩小和/或混淆 JS,它存在于我的 django 模板中? 我还在js中使用模板变量和模板标签,因此,标准的uglifyjs或类似的不符合我最初的要求。 有什么事情要做吗? 最佳答案
我是新用户 ArrayList 。我不明白。 如果我使用int[]作为ArrayList项目有错误: The method put(int) is undefined for the type Arr
是否可以随机打乱 Excel 工作表中行或列中的值。有没有相关的函数/宏?我该怎么做? -广告。 最佳答案 嗯...就像简单的解决方案一样,无需编程。例如,您有一列数据 (A): 23 78 12 7
我想打乱我的数组项。像这样: [1,2,3,4].scramble => [2,1,3,4] [1,2,3,4].scramble => [3,1,2,4] [1,2,3,4].scramble =>
我目前正在为 Android 开发内容创建应用程序。它的主要目的是让用户生成一个包含文本和图像条目的列表(最后由 EditText 和 ImageView 表示)。 我通过使用 ViewHolder
我是一名优秀的程序员,十分优秀!