- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在尝试在结构 vector 中查找元素。该代码在以区分大小写的方式进行搜索时有效。当我尝试将其 boost 为不区分大小写时,我遇到了两个问题。
简单地包含 boost/algorithm/string.hpp
会破坏以前工作的 VS2010 构建。错误是“'boost::phoenix::bind':对重载函数的模糊调用”。在 Xcode 中构建正常。有什么方法可以消除绑定(bind)的歧义?
我想我在第二个(注释掉的)find_if 行中有语法错误,添加了 istarts_with 调用。我从 phoenix header 中收到错误消息“错误:没有名为‘type’的类型”。假设问题 #1 可以解决,我应该如何更正此行?
谢谢!
代码:
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <boost/algorithm/string.hpp> // This include breaks VS2010!
#include <boost/phoenix/bind.hpp>
#include <boost/phoenix/core.hpp>
#include <boost/phoenix/operator.hpp>
#include <boost/phoenix/stl/algorithm.hpp>
using namespace boost::phoenix;
using boost::phoenix::arg_names::arg1;
using boost::istarts_with;
using std::string;
using std::cout;
// Some simple struct I'll build a vector out of
struct Person
{
string FirstName;
string LastName;
Person(string const& f, string const& l) : FirstName(f), LastName(l) {}
};
int main()
{
// Vector to search
std::vector<Person> people;
std::vector<Person>::iterator dude;
// Test data
people.push_back(Person("Fred", "Smith"));
// Works!
dude = std::find_if(people.begin(), people.end(), bind(&Person::FirstName, arg1) == "Fred");
// Won't build - how can I do this case-insensitively?
//dude = std::find_if(people.begin(), people.end(), istarts_with(bind(&Person::FirstName, arg1), "Fred"));
if (dude != people.end())
cout << dude->LastName;
else
cout << "Not found";
return 0;
}
最佳答案
您需要两次绑定(bind)才能使其正常工作。首先定义:
int istw(string a, string b) { return istarts_with(a,b); }
然后使用以下作为 find_if
的谓词:
bind(&istw,bind(&Person::FirstName, arg1),"fred")
两条评论:
bind
,即使用 boost::phoenix::bind
。istw
的定义可能是不必要的,但我找不到合适的方法来替换它。关于c++ - 使用 boost phoenix,如何调用带有 starts_with 的 find_if 调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8496748/
我希望对用户输入字段使用 Laravel 验证,除了我希望强制执行的一条规则外,所有这些都运行良好:如何确保字段以 alpha 开头(它允许在其他地方使用 alpha_dash)。我尝试了 PHP 的
在 R 中,我想重命名函数内以某个前缀开头的所有列(比如 "oldprefix1", "oldprefix2", "oldprefix3", ... 到 "newprefix1", "newprefi
这个问题在这里已经有了答案: Rename columns using `starts_with()` where new prefix is a string (1 个回答) rename colu
use std::path::PathBuf; fn main() { let p = PathBuf::from(r"\\?\C:\test"); println!("{}", p.
我想更改某些变量的值,具体取决于它们是否以某个字符串序列开头。 例子: df % mutate(var2 = ifelse(starts_with("123"), "ok", "not ok")) 所
我想使用 dplyr 来选择与字符串向量匹配的某些列。 one <- seq(1:10) two <- rnorm(10) three <- runif(10, 1, 2) four <- -10:-
例如,我有一个极坐标数据框: >>> df = pl.DataFrame({'A': ['a', 'b', 'c', 'd'], 'B': ['app', 'nop', 'cap', 'tab']})
我想检查我的 url 是否以某些字符串开头,以便随后将其保存到数据库中。字符串存储在一个数组中,由于 starts_with? 接受多个值,我想获取 starts_with? 中的所有数组值。 arr
我有这个代码 if self.name.starts_with?('Bronze') || self.name.starts_with?('Silver') ||self.name.starts_wi
library(tidyverse) 使用下面的示例数据,我有两个数据帧 - Df1 和 Df2。我正在尝试创建一个简单的函数,它按字符串选择列 - 在这种情况下,两个数据框中以“Person”开头的
我有 df具有以下名称的变量: > names(df) [1] "local authority: district / unitary (as of April 2015)" "oslaua"
这与 the answer given here 非常相似,但我不明白为什么 starts_with 不起作用: diamonds %>% filter(across(clarity, ~ g
我有一本字典,我想在字典的键上做一个嵌套的 jmespath.search 以查找以特定字符串开头的键,但我似乎只能使用一次 @ 运算符. > d = {'foo1': 'bar', 'foo2' :
我想这可能是一个简单的技巧,但我不知道如何实现它...... 我的日期集看起来像: Name, Score A a, 20 A, 30 B b, 40 我期望的输出是: Name, Sco
显然他们在任何输入上都给我相同的输出,比如 "Ruby is red".start_with?("Ruby") 或 "Ruby is red".starts_with?("Ruby") 两者都给出相同
我正在尝试在结构 vector 中查找元素。该代码在以区分大小写的方式进行搜索时有效。当我尝试将其 boost 为不区分大小写时,我遇到了两个问题。 简单地包含 boost/algorithm/str
Ruby on Rails 有方法 String#starts_with?,它是用 Ruby 实现的 # File lib/active_support/core_ext/string/starts_
我是一名优秀的程序员,十分优秀!